我是ORM和hibernate的新手。 我的应用程序是复杂的设计模式。与建设者,流畅的界面。 并且这些对象在创建illieagel对象时也会抛出异常。我使用orm映射来访问数据库。我将这些ORM实体转换为我的复杂对象,反之亦然。这是好主意还是其他任何替代品。
答案 0 :(得分:2)
作为一般规则,您应该在真正需要时创建业务对象(在您的情况下它们已经存在)。因此,如果您的应用程序需要这些复杂的对象,那很好(但请记住,它们很难维护,因为当您在数据库和Hibernate对象中进行更改时,您将不得不更改一堆对象)。 如果你可以摆脱那些复杂的对象,你可以在你的应用程序中使用Hibernate的分离实体作为简单的DTO,你将不会有维护两组对象的困难。另一方面,使用业务对象可以使您的Web层(或其他层)独立于Hibernate及其实体,因此如果将来您决定不使用Hibernate,则会使您的生活更轻松。根据我的经验,如果最近不是你的情况并且你正在考虑将Hibernate作为长期解决方案,那么使用Hibernate的分离实体是一个更容易的解决方案。
答案 1 :(得分:1)
您是否有一些要求表明您需要两种实体:富/复和基于ORM?
我使用ORM和domain driven design并且它运行良好。我们将丰富的实体(和值对象)与服务分离,并且这些实体从聚合向下持久化。
当你想使用hibernate映射时,你当然必须稍微改变那些实体,但是我找不到任何会破坏我们的DDD模型的东西。例如。无参数构造函数可以是私有等。
当我们使用fluent / xml映射时,模型与持久层完全分离,请参阅术语persistence ignorance