2011-11-22 83 views
3

我有一個Hibernate實體有幾個是比較胖,但不經常使用的嵌入對象。我想製作嵌入式對象Lazy Loaded,但我最好不要將信息移動到單獨的表中。休眠嵌入式對象可以延遲加載嗎?

是否有可能,以及如何註釋被延遲加載嵌入對象?

回答

3

直接假正經,通過在物體設置屬性是你可以

@Basic(fetch=FetchType.LAZY) 

,你也應該閱讀 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-fetching-lazyproperties

+0

從API:「避免不必要的列讀取以不同的方式,至少對於只讀的交易,是使用HQL或條件查詢的投影功能。這避免了構建時字節碼處理的需要,並肯定是優選的解決方案「。 – ManuPK

+0

我認爲你還沒有使用遺留數據庫,你有50列i.i – osdamv

3

當我從你的問題了解你有一個大對象(或表),你沒有要填寫的所有屬性。 您可以使用HQL或條件查詢的投影特徵告訴here

下面是一個例子,HQL應該是,

select new com.foo.Bean(b.prop1,b.prop2,...) from Bean b

你也需要在Bean類添加對應的構造。

讓我補充一些事情:

  1. lazy在休眠時,它具有獲取來自多個表中的數據纔有意義。在這裏,您可以保存附加查詢以便從其他表中獲取數據。詳細瞭解lazy設置here。它可能不適用於你的情況,因爲你只能從一個表中獲取數據。

  2. 我不覺得它是有多個對象來表示同一個表中的數據,僅僅是因爲在幾列的數據很少使用一個好主意。