延遲載入:
只有當使用以實體物件的屬性(除主鍵屬性外)時,才會傳送查詢語句到資料庫
get不支援延遲載入
@test
public void gettest()finally
}
結果:
hibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?
id:3
name:ddddd
在呼叫get方法時,就已經發出查詢語句
load支援延遲載入
關閉session後@test
public void loadtest()finally
}
結果:
id:3
hibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?
name:ddddd
在呼叫load方法,返回乙個**物件,此時並沒有發出查詢語句,當需要使用studentname屬性時,再發出查詢語句
get:@test
public void get2test()finally
system.out.println("id:"+student.getstudentid());
system.out.println("name:"+student.getstudentname());
}
結果:
hibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?
id:3
name:ddddd
與在session作用域中的結果一樣
load
@test
public void load2test()finally
system.out.println("id:"+student.getstudentid());
system.out.println("name:"+student.getstudentname());
}
結果:
id:3
org.hibernate.lazyinitializationexception: could not initialize proxy - no session
拋異常了,可見延時載入只在session的作用域內有效
小結:
1.只有當使用以實體物件的屬性(除主鍵屬性外)時,才會傳送查詢語句到資料庫
2.延時載入只在session的作用域內有效
hibernate之4 延遲載入
延遲載入 僅僅有當使用以實體物件的屬性 除主鍵屬性外 時,才會傳送查詢語句到資料庫 get不支援延遲載入 test public void gettest finally 結果 hibernate select student0 student id as student1 0 0 student0...
hibernate延遲載入
在hibernate應用中,有時候只訪問指定的持久化物件,在載入該物件時沒有必要載入其關聯的物件,以免浪費記憶體空間,但若想在session關閉後正常訪問該物件,必須在載入該物件時,一起載入該物件的關聯物件,為了滿足檢索持久化物件的不同情況的需求,開發靈活高效的hibernate應用,hiberna...
Hibernate關聯對映之延遲載入
什麼事延遲載入?當真正需要資料時才執行sql語句,其本意是減少不必要的效能開銷!之前提到過乙個延遲載入的例子 load 結果集不能為空 當真正去列印物件屬性時,sql語句才執行!hibernate的lazy屬性 lazy屬性 類級別 true 預設 false 一對多關聯級別 true 預設 ext...