2012-01-21 37 views
6

Hãy nói rằng chúng tôi có một đến nhiều mối quan hệ giữa khách hàng và Điện thoại ..sử dụng chế độ quyến rũ trong ngủ đông

class Customer{ 

@OneToMany(cascade = {CascadeType.ALL},mappedBy = "customer", fetch = FetchType.LAZY) 
@Fetch(FetchMode.SELECT) 
private List<Phone> phoneList; 

} 

Trong đoạn mã trên, những gì là sự khác biệt giữa lấy = FetchType.LAZY và FetchMode.SELECT.

Tôi đọc nó rằng cả hai đều giống nhau, tức là cả hai đều tải xuống bộ sưu tập cơ bản.

Ai đó có thể giải thích cho tôi người nào nên sử dụng khi nào?

Trả lời

13

Loại tìm nạp (lười/háo hức) đề cập đến khi Hibernate sẽ tìm nạp liên kết, cho dù trước khi tìm nạp thực thể (mong muốn) hoặc chờ mã yêu cầu liên kết (lười).

Chế độ tìm nạp (chọn/tham gia) tham chiếu đến cách Hibernate sẽ tìm nạp liên kết, nghĩa là sử dụng câu lệnh SELECT bổ sung hoặc sử dụng kết hợp.

Một số kết hợp này không có ý nghĩa, ví dụ: lười biếng + tham gia. Nếu bạn sử dụng tìm nạp lười, thì chế độ tìm nạp SELECT là chế độ chỉ bạn có thể thực hiện.

Nếu bạn sử dụng tìm nạp mong muốn, thì bạn có thể chọn sử dụng chế độ tìm nạp.

+0

Cảm ơn câu trả lời. Trong trường hợp tìm nạp mong muốn, chế độ tìm nạp nào tốt hơn để sử dụng..SELECT hoặc JOIN? – Anand

+0

@anand: Không có "tốt hơn", nhưng nếu tham gia làm việc cho bạn, nó thường sẽ mang lại hiệu suất tốt hơn. – skaffman

Các vấn đề liên quan