개발의 시작과 끝
2023.09.19 / JPA - 즉시 로딩과 지연 로딩(FetchType.LAZY or EAGER) 본문
FetchType
엔티티 간의 관계를 로딩할 때 사용되는 전략을 결정하는 열거형.
어떤 상황에서 관련된 엔티티를 로딩할지 결정하는 중요한 요소이며,
데이터 액세스 패턴과 성능을 고려하여 적절한 타입을 설정해야함.
크게 두가지 타입으로 나뉘는데 Eager 전략과 Lazy 전략이 있다.
즉시로딩(EAGER)
- FetchType.EAGER로 설정하여 사용.
- 연관된 엔티티를 조회할 때, 즉시 관련된 엔티티를 모두 함께 로딩.
- 관련된 데이터를 한 번에 모두 가져오기 때문에 성능 저하 가능성이 있음.
- 일반적으로 연관된 객체가 항상 필요한 경우에 사용.
지연로딩(LAZY)
- FetchType.LAZY로 설정하여 사용.
- 연관된 엔티티를 실제로 사용할 때 까지 로딩 지연.
- 연관된 엔티티에 접근할 때 해당 엔티티 로딩.
- 연관된 객체가 필요한 경우에만 로딩되어 성능 최적화.
- 주의점은 지연로딩은 영속성 컨텍스트 내에서만 동작하기 때문에
속성 컨텍스트가 살아있는 동안에만 사용 가능.
* 영속성 컨텍스트
- JPA에서 엔티티 객체를 관리하는 논리적인 컨테이너.
- 엔티티 매니저를 통해 엔티티를 데이터배이스와 상호작용할 때 사용.
- 엔티티의 상태를 추적하고 엔티티를 데이터베이스와 동기화.
- 엔티티 조회 시 반복적인 데이터베이스 접근을 줄여주는 캐시역할도 함.
관련글
'자바 공부' 카테고리의 다른 글
2020.03.03 / Day - 19 구성 (0) | 2020.03.03 |
---|---|
2020.02.26 / Day - 13 영역 (0) | 2020.02.26 |
2020.02.23 / Day - 10 상속을 통한 캐스팅 허용 (0) | 2020.02.23 |
2020.02.23 / Day - 10 상속, 메서드 오버라이딩 (0) | 2020.02.23 |
2020.02.22 / Day - 9 static 메서드, 매개변수, 리턴 (0) | 2020.02.22 |