2014-04-15 61 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

如果你使用的包裝, 是你只想承諾之前需要「解包」的映射包裝的狀態,以實體數據庫。

相關問題