将休眠orm实体转换为复杂对象,反之亦然



我是ORM和hibernate的新手。我的应用程序是复杂的设计模式。与建设者,流畅的界面。并且这些对象在创建illeagel对象时也抛出异常。我使用orm映射来访问数据库。我将这些ORM实体转换为我的复杂对象,反之亦然。这是个好主意还是其他选择。

一般来说,您应该在真正需要业务对象时创建业务对象(在您的情况下,它们已经存在)。因此,如果您的应用程序需要这些复杂的对象,这是可以的(但请记住,它们很难维护,因为当您更改数据库和Hibernate对象时,您将不得不更改一堆对象)。如果您可以去掉那些复杂的对象,那么您可以在整个应用程序中使用Hibernate的分离实体作为简单的DTO,这样就不会有维护两组对象的困难。另一方面,使用业务对象可以使您的web层(或其他层)独立于Hibernate及其实体,因此,如果将来您决定不使用Hibernate,您的生活会更轻松。根据我的经验,如果最近的情况不是这样,并且您认为Hibernate是一个长期的解决方案,那么使用Hibernate的分离实体是一个更容易的解决方案。

您是否有一些要求,要求您需要两种实体:富实体/复杂实体和基于ORM的实体?

我将ORM与域驱动设计一起使用,效果很好。我们将实体(和值对象)与服务解耦,这些实体从聚合向下持久化。

当您想要使用hibernate映射时,您当然必须稍微更改这些实体,但我没有发现任何会破坏我们的DDD模型的东西。例如,无参数构造函数可以是私有的。

当我们使用fluent/xml映射时,模型和持久层完全分离,请参阅术语持久性无知

最新更新