問題

  最佳答案

有時候您有兩個實體,它們之間有一個關係.例如,您可能有一個名為University的實體,另一個名為Student的實體,大學可能有很多學生:

大學實體可能有一些基本屬性,如id、姓名、地址等,以及一個稱為學生的收藏財產,這些財產將返回給定大學的學生名單:

A university has many students

 public class University {
   private String id;
   private String name;
   private String address;
   private List<Student> students;

   // setters and getters
}
 

現在,當從資料庫載入大學時,JPA為您載入其id,名稱和地址欄位.但是對於如何載入學生有兩個選項:

  1. 將其與其他欄位一起載入(即急切地),或
  2. 當你呼叫大學的getStudents()方法時,要載入它(即懶惰)。

當一所大學有許多學生的時候,把所有的學生加在一起是不高效的,特別是當他們不需要的時候,在類似的情況下,你可以宣告你希望學生在實際需要的時候被載入。這被稱為延遲載入。

這是一個例子,其中students顯式標記為急切載入:

 @Entity
public class University {

    @Id
    private String id;

    private String name;

    private String address;

    @OneToMany(fetch = FetchType.EAGER)
    private List<Student> students;

    // etc.    
}
 

這是一個示例,其中students顯式標記為懶惰載入:

 @Entity
public class University {

    @Id
    private String id;

    private String name;

    private String address;

    @OneToMany(fetch = FetchType.LAZY)
    private List<Student> students;

    // etc.
}
 

  相同標籤的其他問題

javahibernatejpaormjava-persistence-api