본문 바로가기

spring

@Query 어노테이션

Query Method 방법
  1. 메소드명으로 쿼리 생성
  2. @Query 사용
    • JPQL(Java Persistence Query Language)을 사용하여 Query를 생성

 

JPQL (Java Persistence Query Language)
  • 객체지향 쿼리, DB 테이블이 아닌 엔티티 객체를 조회
  • JPA 일부에 정의되어 있으며, DB 종류(Oracle, MySQL, PostgreSQL, ...)에 영향을 받지 않고 작성할 수 있는 장점이 있음

 

위치기반 (indexed) 쿼리 파라미터

  • ?1 ≫ 첫 번째 파라미터인 emailAddress의 값이 전달됨
  • 만약 파라미터가 (String emailAddress, String name) 식이었다면
    ?1은 emailAddress / ?2는 name을 전달하게 됨

 

명명된 (named) 쿼리 파라미터

  • %:keyword ≫ 파라미터 중 keyword값이 전달됨

 

Native Query 사용하기
Native Query :
JPQL (엔티티 모델 기반의 객체 지향 쿼리 언어)의 문법을 따르지 않고 데이터베이스의 SQL 문법을 그대로 사용하여 작성하는 것
  • @Query 키워드를 사용하여 Native Query를 쓸 수 있음

  • 위치 기반 파라미터 인덱스는 0부터 시작

  • named 쿼리 파라미터는 :name 형태로 표현

  • 주의 사항
    1. Spring Data JPA가 제공하는 특정 DB 종류에 종속되지 않는 장점을 누릴 수 없음
    2. Pagination을 할 때 추가적인 작업이 필요
    3. 동적 정렬을 지원하지 않아 order by와 같이 따로 처리 필요

 

 

 

 

'spring' 카테고리의 다른 글

JPA Auditing / Base Entity  (0) 2024.09.14
Lombok  (0) 2024.09.13
페이징 / 정렬 처리  (0) 2024.09.13
Spring Data JPA 이용하기  (0) 2024.09.13
영속성 컨텍스트  (0) 2024.09.13