JPA @OneToMany
的fetch
屬性可選擇FetchType.LAZY
和FetchType.EAGER
,差別如下。
FetchType.LAZY
只在用到時才載入關聯的物件。FetchType.EAGER
在查詢時立刻載入關聯的物件。
例如Department
下有多個Employee
如下
public class Department {
private String id;
private String name;
private String address;
@OneToMany(fetch=FetchType.LAZY)
private List<Employee> employeeList;
// setters and getters
}
如果是FetchType.LAZY
,則查詢時並不立刻將employeeList
中的物件載入,而是在呼叫如employeeList.get()
等用來存取Employee
物件的方法時才會載入(必須EntityManager未中斷的情況下)。
如果是FetchType.EAGER
,則是開始查詢時就會將employeeList
中的物件立刻載入。
沒有留言:
張貼留言