지연로딩(Lazy Loading)?
:: 필요한 시점에 데이터를 로드하는 방법을 의미
:: Hivernate라는 ORM 프레임워크를 기반으로 함
:: Hivernate는 JPA 구현체 중 하나로 엔티티를 로드할 때 지연로딩을 사용 할 수 있음
@ManyToOne 과 @OneToOne 관계에서는 즉시로딩 (Eager Loading)
@OneToMany 와 @ManyToMany 관계에서는 지연로딩 (Lazy Loading)
지연로딩
애플리케이션 에서 필요한 시점에 실제로 데이터를 로드 할 수 있음
JPA에서는 Fetch Type 라는 방식을 사용
ㄴ Fetch Type에는 LAZY , EAGER 방식있음
LAZY :필요한 시점에 정보를 가져옴
EAGER : 이름의 뜻 처럼 조회할 때 연관된 모든 Entity의 정보를 즉시 가져옴
불필요한 데이터베이스 쿼리와 데이터전송을 줄일 수 있음
대용량 데이터를 다룰 때 효과적
지연로딩 즉시로딩 구분
지연로딩된 Entity의 저옵를 조회하려고 할 때는 반드시 영속성 컨텍스트가 존재해야함
즉, 영속성컨텍스트가 존재한다는 뜻은 결국 트랜잭션이 적용되야함
지연로딩 Entity -> persist -> @Transactional
정리하면 지연로딩 된 정보를 조회하려고 할때는 반드시 트랜잭션이 적용되어 있어서 영속성컨텍스트가 존재하는지 확인해야함
'TIL' 카테고리의 다른 글
+37 Spring 고어 Entity 삭제 (0) | 2023.08.04 |
---|---|
+36 영속성 전이 (0) | 2023.07.27 |
+34 Spring N 대 M관계 (0) | 2023.07.22 |
+33 Spring 1대N 연관관계 (0) | 2023.07.20 |
+32 Entity 연관관계 1 대 1 관계 (0) | 2023.07.18 |