English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Hibernate에서 지연 로드와 열망 로드의 차이

Lazy와 Eager는 ORM에서 두 가지 데이터 로드 전략입니다. 예를 들어 Hibernate와 Eclipse Link에서 사용되는休면과 Eclipse Link입니다. 하나의 엔티티 클래스가 다른 엔티티를 참조할 때(예: Employee와 Phone(Employee의 전화번호)), 이러한 데이터 로드 전략을 사용합니다 

지연 로드-getter나 size 메서드를 명시적으로 호출할 때만 연관 데이터가 로드됩니다

  • 一对多 셋을 사용할 때, 지연 로드를 사용하십시오

  • 관련 엔티티를 사용하지 않는다고 확신할 때, '지연 로드'를 사용하십시오 

Eager 로드-데이터 로드는 부모를 가져올 때 발생합니다

  •  관계가 많지 않을 때, '긴급 로드'를 사용하십시오. 따라서 긴급 로드는 서버에서 추가적인 쿼리를 줄이는 좋은 습관입니다

  • 모든 곳에서 주요 엔티티를 사용하려고 확신할 때, '긴급 로드'를 사용하십시오

순서느림긴급
1
추출 전략 
지연 로드에서는 getter나 size 메서드를 명시적으로 호출할 때만 연관 데이터가 로드됩니다
긴급 로드에서는 부모를 가져올 때 데이터 로드가 발생합니다 
2
ORM 층의 기본 전략 
기본적으로 ManyToMany와 OneToMany 연관은 지연 로드 전략을 사용합니다.
기본적으로 ManyToOne과 OneToOne 연관은 지연 로드 전략을 사용합니다.
3
로드 구성
주석 매개변수를 사용하여 활성화할 수 있습니다:

fetch = FetchType.LAZY 
주석 매개변수를 사용하여 활성화할 수 있습니다:

fetch = FetchType.EAGER
 4
성능
초기 로드 시간은 급한 로드보다 훨씬 짧습니다
불필요한 데이터를 너무 많이 로드하면 성능에 영향을 줄 수 있습니다