스프링 데이터 JPA 쿼리 메서드메서드 이름으로 쿼리 생성메서드 이름을 분석하여 JPQL 쿼리로 자동 생성 종류메서드 이름메서드 이름으로 JPA Named Query 호출@Query 어노테이션을 사용레포 인터페이스에 쿼리를 직접 정의함메서드 이름으로public interface ItemRepository extends JpaRepository { List findByName(String name); }@Test void selectSpringDataJpa() { List item = itemRepository.findByName("item1"); System.out.println("item = " + item); }select i1_0.id,i1_0.name,i1_0.price,i1_0.stock_qua..
JPA Named 쿼리쿼리에 이름을 부여하여 사용하는 방식xml , 어노테이션으로 가능하다.예제@NamedQuery( name = "Member.findByName", query = "select m from Member m where m.name = :name" ) public class Member {@Test void testNamedQuery() { List resultList = em .createNamedQuery("Member.findByName", Member.class) .setParameter("name", "상준") .getResultList(); System.out.println("resultList = " + resultList); }select m1_0.id,m1_0.name f..
JPA Named 쿼리쿼리에 이름을 부여하여 사용하는 방식xml , 어노테이션으로 가능하다.예제@NamedQuery( name = "Member.findByName", query = "select m from Member m where m.name = :name" ) public class Member {@Test void testNamedQuery() { List resultList = em .createNamedQuery("Member.findByName", Member.class) .setParameter("name", "상준") .getResultList(); System.out.println("resultList = " + resultList); }select m1_0.id,m1_0.name f..
그루핑@Test public void selectGroup() { List items = qf.selectFrom(item) .groupBy(item.price, item.id) .having(item.price.gt(1000)) .fetch(); System.out.println("items = " + items); }items = [Item(id=3, name=item2, price=2000, stockQuantity=2), Item(id=4, name=item3, price=3000, stockQuantity=3), Item(id=5, name=item4, price=4000, stockQuantity=4), Item(id=6, name=item5, price=5000, stockQuantity=5..
QueryDsl 기본 페이징과 정렬QItem item = QItem.item; query.from(item) .where(item.price.gt(20000)) .orderBy(item.price.desc(), item.stockQuantity.asc()) .offset(10).limit(20) .list(item);위 코드는 영한님의 책에서 발췌한 코드이다위 코드는 QueryDSL에서 JPAQuery.list 메서드가 제거된 것은 QueryDSL이 3.x 라인에서 4.x 라인으로 업그레이드될 때 발생한 변경사항이었습니다. 따라서, 4.0.4 버전을 사용 중이시라면 list 메서드는 더 이상 사용할 수 없습니다.4.x 버전은 코드 베이스에 많은 주요 변경 사항을 도입하여 이전 코드와의 호환성이 떨어지는 ..