2013-07-18 63 views
0

我們最近在Hibernate中有一個APP,我們開始在我們的DAO的View中使用Open Session,我們獲取我們真正需要的數據..我們不關閉會話,但後來在我們的控制器中對實體Hibernate的操作是從數據庫中獲取數據我知道這種行爲是使用開放會話的主要原因,但我不需要獲取是一些情況..我想知道如果我可以告訴休眠不獲取數據在某些情況下....Java Hibernate OpenSession in View避免獲取控制器

student.getSchool()。getTeachers()

在這種情況下

我必須加載所有我從這個3個實體所需要的數據,但再次冬眠開始加載學校和教師..

非常感謝

回答

0

三個主要選項:

  1. 如果使用EH-Cache功能,您將不必等待休眠再次查詢爲學生&學校數據庫。
  2. 或者您可以在HTTP會話中保留表格& Hibernate Session,這也實現了緩存。
  3. 對於AJAX或類似請求只提取教師,您可以將Criteria更改爲Projection或使用Hibernate Query來「投影」或僅檢索目標實體..在數據庫級別,執行聯合或子表達式查詢。在這種情況下,學生將被加載,但僅作爲代理。