2014-04-15 58 views
0

我目前正在研究我的第一个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或者是有什么在休眠,让我做到这一点?

回答

0

如果你使用的包装, 是你只想承诺之前需要“解包”的映射包装的状态,以实体数据库。

相关问题