Native Query
SQL을 직접 짜는 방식
정말 어쩔 수 없을 때만 사용한다.
최근에는 스프링 데이터 Projection을 활용한다.
스프링 데이터 JPA 기반 네이티브 쿼리
페이징 지원
반환 타입
Object[]
Tuple
DTO
스프링 데이터 인터페이스인 Projections 지원
조회하려는 필드를 select 절에 다 적어줘야 해서 불편하다.
JPQL처럼 애플리케이션 로딩 시점에 문법을 확인하는 것이 불가하다.
동적 쿼리를 쓸 수 없다.
반환 타입이 제한되어 있다.
Sort 파라미터를 통한 정렬이 정상 동작 하지 않을 수도 있다.
믿지 말고 직접 처리하자.
JPQL은 위치 기반 파라미터를 1부터 시작하지만 SQL은 0부터 시작한다.
Projections 활용
스프링 데이터 JPA 네이티브 쿼리와 인터페이스 기반 Projections를 활용할 수 있다.
동적 네이티브 쿼리
하이버네이트를 직접 활용한다.
스프링 JdbcTemplate, myBatis, jooq 같은 외부 라이브러리를 사용하는걸 추천한다.
Last updated
Was this helpful?