Java 复杂ORM映射

Java 复杂ORM映射,java,mapping,domain-driven-design,dto,ddd-repositories,Java,Mapping,Domain Driven Design,Dto,Ddd Repositories,我正在编写一个JavaDDD应用程序,其中已经设计并实现了数据库模型。问题是我的域对象与数据库模型不同,ORM映射太复杂。问题是:我能用它做什么?DTO?如果存储库和域对象看到存储库接口,如何将DTO与它们关联 谢谢 Hibernate非常支持遗留数据库。它远远超出了类=表映射。如果您使用额外的DTO层,那么您所指的复杂性不会消失,它只会分布在另一层上。只将其包含在映射文件中可能更简单。将模型稍微向数据库模式倾斜可能是有意义的,但前提是您将在降低总体复杂性方面看到显著的好处。然后再重构域模型,以

我正在编写一个JavaDDD应用程序,其中已经设计并实现了数据库模型。问题是我的域对象与数据库模型不同,ORM映射太复杂。问题是:我能用它做什么?DTO?如果存储库和域对象看到存储库接口,如何将DTO与它们关联


谢谢

Hibernate非常支持遗留数据库。它远远超出了类=表映射。如果您使用额外的DTO层,那么您所指的复杂性不会消失,它只会分布在另一层上。只将其包含在映射文件中可能更简单。将模型稍微向数据库模式倾斜可能是有意义的,但前提是您将在降低总体复杂性方面看到显著的好处。然后再重构域模型,以及。

许多ORM在实现足够好的映射功能方面缺乏。此外,它们引入了概念上的快捷方式,可以阻止解决方案与业务保持一致。你的案子就是一个很好的例子


在你的情况下,我可能会质疑ORM的使用。我将实现业务模型,而不尝试重用现有的数据库模型,使用POCO、域服务。。。对于持久性,考虑到您有两个不同的模型,我将通过将域模型的依赖项注入数据访问层来管理代码,以防止存储模型污染您的域,然后在DAL中,使用过程代码和micro ORM(如果存储模型复杂,则使用ORM)实现我自己的映射. 它代表了更多的工作,但您将得到一个更好的域。

我不确定DTO在这种情况下会有什么帮助。你能举一些你遇到困难的映射的例子吗?您可能会惊讶于数据库模式和域模型的不同之处。也许你需要重新设计域以适应数据库(我知道这不是通常的方式,但有时是必要的)。我面临着同样的问题,而且没有现有的ORM(如HIbernate)可以将我的域对象映射到现有的遗留数据库设计。保存每个表单会导致插入多个表并更新其他一些表的某些字段。