是否应该将域对象与其他应用程序隔离?

时间:2013-07-18 18:16:53

标签: java hibernate hibernate-mapping

我对Hibernate相对较新,并且正在尝试理解设计DAO的最佳架构方法。最初我创建了一组域(Entity)对象,并编写了一个DAO接口和impl来访问它们。为了降低在集合中使用实体的风险,我编写了不使用主键的equals()和hashCode()方法。但我发现这很麻烦而且效率低下。然后我决定通过将域对象的使用限制在DAO并使用DTO向DAO发送/检索来消除该问题。令我感到震惊的是,另一个好处是从表结构​​发送/检索的数据的抽象和解耦。

但是,如果没有使用Entity对象开始使用Hibernate,那么使用Hibernate会很麻烦。 EG,在@OneToMany关系中编写依赖对象列表的DAO方法不能再传递父端实体的实例,因为虽然使用DAO的代码可能具有父代的id,但它没有父代实体通过。必须删除该关系或使其成为单向关系,或者DAO必须检索父关系才能获得实体引用。

之前的一个回复标记为DTO的反模式。我明白为什么。但是,随着实体类的广泛使用,我提到的Hibernate身份字段问题不会成为问题而且有潜在危险吗?另外,从表结构中抽取返回的数据(如解耦)是否没有其他优点?既然如果返回复杂的数据集,可能还需要DTO,为什么不百分之百地使用它们并获得我提到的优势呢?

0 个答案:

没有答案