Framework/Orm&Mapper

[JPA] Lazy Loading 개념

simDev1234 2022. 11. 11. 14:43

|  관련 용어

용어 What? How?
Lazy Loading 사용자가 보지 않는 리소스는 차후에 로딩하는 기술 - 프론트 : 무한 스크롤, placeholder 등
- 백엔드 : JPA의 지연 로딩

 

|  JPA의 Lazy Loading 

- 개발자는 JPA를 통해 프록시를 만들 수 있다.

- 프록시란, 가짜 객체를 말하는 것으로, 실제 엔터티에 대한 참조값을 가진다.

- 하나의 엔터티가 다른 엔터티와 연관관계를 맺고 있을 때 (oneToMany) , 

  연관된 객체들을 처음부터 DB에서 조회하지 않고, 실제 사용하는 시점에 DB에서 조회하면 속도를 향상시킬 수 있다.

- JPA에서는 프록시가 참조하는 객체들의 데이터 조회 시점을 정하는 타입을 Fetch Type이라 하는데, 

즉시로딩 - 한 객체를 조회할 때, 참조 객체들까지 전부 읽어온다.(EAGER),
지연로딩 - 한 객체를 조회할 때, 참조 객체들은 무시하고 해당 객체의 엔터티 데이터만 가져온다.(LAZY)

- 그 타입 중에서도 지연로딩(LAZY)이 바로 Lazy Loading이다.

 

|  General한 Lazy Loading 용어 의미

- Lazy Loading은 JPA 뿐만 아니라, 프론트에서도 사용하는 용어이다. 

- 프론트에서는 이미지나 동영상 등의 리소스들을 전부 다 올리지 않고 사용자가 필요로 할 때에만 로딩하기도 하는데,

- 이 또한 페이지의 로딩이 너무 느려지는 현상을 방지하기 위해서이다.

- 결국 정리하자면, 지연 로딩은 사용자가 당장 쓰지 않는 불필요한 데이터의 로딩을 지연시키겠다는 의미이다.

 

 

[ 참고 및 출처 ]

Lazy Loading,

https://scarlett-dev.gitbook.io/all/it/undefined-1

https://programmer-chocho.tistory.com/81

https://victorydntmd.tistory.com/210

https://velog.io/@bread_dd/JPA%EB%8A%94-%EC%99%9C-%EC%A7%80%EC%97%B0-%EB%A1%9C%EB%94%A9%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C