본문 바로가기
728x90

지연로딩2

[ JPA ] 즉시 로딩과 지연 로딩(FetchType.LAZY or EAGER) Intro 이전 포스팅에서 프록시(Proxy)에 대한 글을 작성했습니다. 프록시(Proxy)는 이번 포스팅에서 즉시 로딩(EAGER)과 지연 로딩(LAZY)을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시 로딩(EAGER)과 지연 로딩(LAZY)에 대한 개념에 대해 먼저 알아보자. 예제 테이블로 Member와 Team이 있다고 가정해보자. Member를 조회할 때 Team도 함께 조회해야 할까? 비즈니스 로직에서 단순히 멤버 로직만 사용하는데 함께 조회하면, 아무리 연관관계가 걸려 있다고 해도 손해이다. JPA에서는 데이터를 조회할 때 즉시 로딩(EAGER)과 지연 로딩(LAZY) 두 가지 방식이 있다. 이 두 가지 방식을 간단하게 설명하면 즉시 로딩(EAGER)은 데이터를 조회할 때 연관된 데.. 2024. 3. 26.
[ JPA ] 프록시(Proxy) Intro 객체는 객체 그래프로 연관된 객체들을 자유롭게 탐색할 수 있다. 하지만 데이터베이스 매핑을 하는 엔티티 객체에서는 자유도가 떨어진다. 연관된 테이블의 데이터를 조회하기 위해서는 Join을 사용해서 진행해야 하기 때문이다. 자유로운 객체 그래프 탐색의 가능성으로 인해 연관된 모든 테이블을 조회하는 것은 비용이 따르는데, 실제로 연관된 테이블을 사용하지 않는다면 Join을 사용해서 조회한 결과를 가져오기 때문이다. 이 문제를 해결하기 위해 프록시가 등장하게 되었다. 연관된 객체를 처음부터 데이터베이스에서 조회하는 것보다 실제 사용하는 시점을 기준으로 데이터베이스를 조회할 수 있도록 해주고 자주 함께 사용하는 객체는 사용하는 시점이 아닌 해당 객체를 조회했을 때 바로 가져올 수 있도록 하는 방법도 .. 2024. 3. 21.
728x90