我目前正在研究我的第一个hibernate项目,遇到了一些设计问题。 因为我不希望任何业务逻辑在我的DataObjects从Hibernate返回并且不想为每个setter/getter使用业务逻辑管理器,所以我决定创建一个封装这些对象的封装类。 当使用条件/休眠查询时,我创建了一个ResultTransformer
,它将把hibernate的数据对象转换成包装类。所以现在,任何查询方法返回的所有对象都是“包装”类,而不是DO。Hibernate将返回的数据对象转换为包装类
但是现在我也想对我的对象的孩子使用相同的逻辑。举个例子以下对象:ChapterDO对象的
public class BookDO{
@OneToMany(fetch = FetchType.LAZY)
protected List<ChapterDO> chapters;
public ChapterDO getChapters(){ return chapters;}
}
的getChapters方法(将我的书的经理叫)将返回我的情况,但我想回到什么是“包装”章类的实例。 一个额外的问题是,当我想添加一个章节:
public class BookDO{
public void addChapter(ChapterDO chapter)
{
chapters.add(chapter)
}
}
public class BookManager()
{
public void addChapter(Chapter chapter)
{
bookDOObject.add(chapter);
}
}
但是,这将失败,因为这本书经理只能访问到包装对象,所以我会“解包”吧。我很犹豫,只是添加getChapterDo()方法的包装,因为我觉得这将是一个“黑客”。
所以我想知道什么是处理这种情况的最佳方法是?我需要创建于经理层unwrappers/wrappers
或者是有什么在休眠,让我做到这一点?