스프링 부트

쿼리 메소드

john_ 2023. 4. 3. 16:48
728x90

 

 

  • 쿼리 메소드는 스프링 데이터 JPA에서 제공하는 핵심 기능 중 하나로 Repository 인터페이스에 간단한 네이밍 룰을 이용하여 메소드를 작성하면 원하는 쿼리를 실행 가능합니다.
  • 쿼리 메소드를 이용할 때 가장 많이 사용하는 문법으로 find를 사용합니다.
  • 엔티티의 이름은 생략이 가능하며, By 뒤에는 검색할때 사용할 변수의 이름을 적어줍니다.
find +  (엔티티 이름) + By + 변수이름

쿼리 메소드 Sample 및 JPQL snippet

 

  • 조건이 많아질 때 쿼리 메소드를 선언하면 이름이 길어져 오히려 보기 힘들다는 단점이 있음.
  • @Query 어노테이션을 이용하면 SQL과 유사한 JPQL (Java Persistence Query Language) 라는 객체지향 쿼리언어를 통해 복잡한 쿼리도 처리 가능.
  • JPQL은 엔티티 객체를 대상으로 쿼리를 수행하는 객체지향 쿼리.
  • JPQL은 SLQ을 추상화해서 사용하기 때문에 특정 데이터베이스 SQL에 의존하지 않음.

 

    @Query("select i from Item i where i.itemDetail like %:itemDetail% order by i.price desc")
    List<Item> findByItemDetail(@Param("itemDetail") String itemDetail);
  • @QuerynativeQuery 속성을 사용하면 기존 쿼리를 그대로 활용 할 수 있음.
  • 특정 데이터베이스에 종속되는 쿼리문을 사용하기 때문에 데이터베이스에 대해 독립적이라는 장점을 잃어버림.
  • 기존에 작성한 통계용 쿼리처럼 복잡한 쿼리를 그대로 사용해야 하는 경우 활용 가능.
728x90

'스프링 부트' 카테고리의 다른 글

JPAQuery 데이터 반환 메소드  (0) 2023.04.04
QItem 이란?  (0) 2023.04.04
Repository 인터페이스의 설계  (0) 2023.04.03
엔티티 매핑 관련 어노테이션  (0) 2023.04.03
spring boot로 shop 만들어 보기  (0) 2023.04.03