1
假設我有一個:批量加載延遲加載Hibernate屬性的
class Student {
int id;
String name;
List<Course> courses; //Lazily loaded as per Hiberante config
}
現在假設我有一個名單的學生,爲了優化所有這些學生獲取名單,我是批量選擇它們,而不是讓Hibernate逐個調用一個單獨的SQL。我無法關閉延遲加載,因爲在許多其他代碼路徑中我不會訪問課程屬性。
我當然可以編寫一個函數,它將取得courseIds列表並返回一個List,然後將這些對象附加到Hibernate會話中,但這些對象將不會與由Hibernate加載的Student對象關聯。如果我調用像student.setCourses()這樣的函數,那麼我會遇到Hibernate會認爲會話很髒的風險,並嘗試更新Student對象。
我真的很想聽聽使用Hibernate時遇到類似問題的人。