• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

실무에서 지연로딩이 사용되는 경우

23.08.06 13:32 작성 조회수 270

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (아니요)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

강의를 보고 엔티티를 설계하여 프로젝트를 진행하고 있습니다. 강의에서 말씀해주신대로 모든 FetchType을 LAZY로 하여 개발하고 있는데 문득 지연로딩이 실제로 어떤 상황에 필요한지가 궁금해졌습니다.

강의에서 말씀해주신대로 연관관계 매핑 데이터를 즉시 가져오지 않고 필요할 때 사용할 수 있도록 할 때 지연로딩을 사용한다는 것은 이해했습니다.

실무에서 어떤 상황에 적용되는지 찾아보니, 여러 이미지들을 스크롤하면서 이미지를 실제로 화면에서 보게 될 때 사용하면 효율적이라는 포스팅을 보았습니다.

그런데 또 실무에서는 OSIV를 off한다고 보았습니다. OSIV가 off라면 영속성 컨텍스트가 Service, Repository에서만 살아있게 되어 어쨌든 Service 단에서 모두 처리해야 하는데 그렇다면 지연로딩이나 즉시로딩이나 별 차이가 없는 것 아닌가요??

 

혹시 제가 잘못 알고 있는 것이 있는지, 어떤 상황에서 지연로딩을 사용하는 것이 좋은지 궁금합니다.

 

감사합니다:)

답변 1

답변을 작성해보세요.

0

codesweaver님의 프로필

codesweaver

2023.08.07

안녕하세요. mjmjz9님, 공식 서포터즈 코즈위버입니다.

백엔드 JPA에서 사용하는 지연로딩과 프론트엔드에서 사용하는 지연로딩. 용어가 개념이 같습니다.

프론트에서 지연로딩은, 다수의 리소스를, 현재 사용자가 보고 있는 화면 내의 것만 우선 로드하고 나머지는 보류하여 페이지 로드를 줄이는 방법인데요, 말씀하신것처럼 '무한 스크롤'도 이런 지연로딩을 응용한 사례라고 할 수 있습니다.

다만, 무한 스크롤을 구현하는 방법은, 추가 리소스가 필요할 때 이 리소스를 서버에서 요청하여 스크립트로 파싱하는 과정을 거쳐 브라우저에 표현합니다. 즉, 새로운 통신과정을 거치게 되므로 OSIV 여부와는 무관하게 동작합니다 :)

감사합니다.

mjmjz9님의 프로필

mjmjz9

질문자

2023.08.07

답변 감사합니다.

그렇다면 JPA에서의 지연 로딩은 언제 쓰는 것인가요?

프론트엔드로 데이터를 json 타입으로 보낸다고 하면 필요한 데이터를 전부 보내줘야 할텐데, 이런 상황에서 지연 로딩의 역할은 무엇인지, 지연로딩으로써 얻을 수 있는 이점이 무엇인지 궁금합니다.