我正在编写一个Java DDD应用程序,其中已经设计并实现了数据库模型。问题是我的域对象与数据库模型不同,ORM映射太复杂。这是一个问题:我该怎么办? DTO?如果他们看到存储库接口,我如何将DTO与存储库和域对象相关联?
谢谢!
答案 0 :(得分:1)
Hibernate对遗留数据库有很好的支持。它远远超出了class = table mapping。如果你使用额外的DTO层,你所指的复杂性就不会消失,它只会分散在另一层上。在映射文件中包含它可能更简单。将模型稍微弯曲到数据库模式可能是有意义的,但前提是您将在降低整体复杂性方面看到显着的好处。然后重构域模型以及database。
答案 1 :(得分:1)
许多ORM缺乏实现足够好的映射功能。此外,他们引入了概念上的快捷方式,可以阻止解决方案在业务上保持一致。你的案子就是一个很好的例子。
在您的情况下,我可能会质疑使用ORM。我将实现业务模型而不尝试重用现有的数据库模型,使用POCO,域服务......对于持久性,假设您有2个差异模型,我将使用域模型的依赖注入管理代码到数据访问层,以防止存储模型污染您的域,然后,在DAL中,使用过程代码和微ORM(如果存储模型复杂,则为ORM)实现我自己的映射。它代表了更多的工作,但你会得到一个更好的领域。