hibernate之4 延遲載入

2021-06-26 13:35:32 字數 2006 閱讀 5957

延遲載入:

只有當使用以實體物件的屬性(除主鍵屬性外)時,才會傳送查詢語句到資料庫

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支援延遲載入

@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屬性時,再發出查詢語句

關閉session後

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...