TIL

+35 Spring 지연로딩

JAVABOZA 2023. 7. 26. 14:54

 

지연로딩(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