inblog logo
|
LifeLog, DevLog
    Summary

    JPA와 QueryDSL의 현실적인 사용법 정리

    KYJTHEYJ's avatar
    KYJTHEYJ
    Feb 25, 2026
    JPA와 QueryDSL의 현실적인 사용법 정리
    Contents
    JPA 를 사용했을 때의 장점 / 단점장점단점QueryDSL 을 사용했을 때현실적인 사용법

    JPA 를 사용했을 때의 장점 / 단점

    장점

    • SQL을 작성하지 않아도 쿼리를 통해 데이터를 가져올 수 있다

    • 객체 지향적으로 테이블이 아니라 객체로 생각하여 표현이 가능함
      (user.getId() 같은)

    • DB에 구애받지 않고 대다수의 DB를 제어할 수 있음

    • 영속성 개념을 통하여 더티체킹을 통한 감지 자동화
      1차 캐시 등의 개념으로 트랜잭션 내부 쿼리 생성 최소화


    단점

    • 패러다임의 불일치, SQL은 원자성을 지닌 각각의 row 별 각각 값을 지님
      허나 객체로 생각하면 클래스라는 하나의 모음 형식으로 값이 List 적임

    • 불일치를 해결 및 활용하기 위한 연관관계를 통한 새로운 복잡성

    • 그로 인한 부가적인 문제들 (로딩 방식, N+1, 예상 못할 SQL 등의 문제 발생)

    QueryDSL 을 사용했을 때

    QueryDSL 을 통하여 SQL과 유사하게 쿼리를 직접 개발자가 제어한다면
    예상 못할 N+1, 로딩 방식 등의 문제를 해결 할 수 있음

    복잡성도 원래 단방향, 양방향 연관관계를 없애고
    따로 타 테이블의 PK를 개별 컬럼으로 보유한다면 줄일 수 있음
    (연관관계 삭제를 통하여)

    현실적인 사용법

    단순 CRUD → JPA 쿼리메서드

    복잡한 조회 및 동적 쿼리 → QueryDSL (연관관계는 Join 으로 해결)

    정합성/복잡한 조인의 쿼리 → JPQL Native Query

    SQL 타입 추구 → JOOQ, SQL 직접적 사용 방식

    Share article
    Contents
    JPA 를 사용했을 때의 장점 / 단점장점단점QueryDSL 을 사용했을 때현실적인 사용법

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog