JPA의 조회 전략과 쿼리 방식 정리

leejihyeon·2026년 6월 11일

📅 날짜: 2026년 6월 11일


오늘 공부한 핵심 내용

오늘은 JPA를 공부하면서 헷갈렸던 개념 하나를 정리했다.
바로 조회전략과 쿼리 방식이다.

처음에는 둘 다 그냥 "데이터를 조회하는 방법"이라고만 단순히 생각했는데, 공부를 하다보니 둘은 완전히 다른 축의 개념이었다.
이 둘을 분리해서 이해해야 JPA를 훨씬 명확하게 볼 수 있다는 것을 알게되었다.


학습 내용 정리

조회 전략이란?

조회 전략은 연관된 엔티티를 언제, 어떻게 가져올지에 대한 방식이다.
조회 전략에는 다음과 같은 개념들이 있다.

  • LAZY
  • EAGER
  • Fetch Join
  • EntityGraph

LAZY

LAZY는 지연 로딩 방식이다.
연관된 엔티티가 실제로 필요해지는 시점에 조회한다.

@Entity
public class Order {

    @Id @GeneratedValue
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    private Member member;
}
  • 위 코드에서 Order를 조회해도 member는 바로 조회되지 않는다.
  • 하지만 order.geteMember()를 호출하는 시점에서는 member를 조회하는 쿼리가 나간다.
orderRepository.findById(1L).orElseThrow(
	() -> new RuntimeException("에러 발생" )  // 이때 order를 조회
    
foundOrder.getId();           // 1번
foundOrder.getName();         // 2번
foundOrder.getMemberId();     // 3번
foundOrder.getMemberName();   // 4번

위의 코드일 때 member도 같이 조회되는 위치는 어디일까요?

답은 4번이다.

select
	o.id,
    o.member_id,
    o.name
from
	order o
where
	o.id = ?

여기까지가 3번일때 나오는 쿼리문이다.
order테이블에 연관관계로 member_id가 있기 때문에 member_id를 조회할 때는 member가 필요없다.

select
	o.id,
    o.member_id,
    o.name
from
	order o
where
	o.id = ?
Hibernate:
	select
    	m.id,
        m.name
    from
    	member m
    where
    	m.id = ?

하지만 member_name를 조회할 때는 member가 필요하기 때문에 그때 member를 조회한다.

EAGER

  • EAGER는 즉시 로딩이다.
    엔티티를 조회할 때 연관 객체도 함께 조회한다.


각 차이점





→ 💡핵심 차이점 요약









🔍추가로 알아보기

**Q.

**A.

오늘의 복습 메모

  • 다시 볼 개념 적어두기


  • 추가 복습할 내용 적기


출처

0개의 댓글