Spring/Data JPA4 [Data JPA] 순수 JPA 페이징과 정렬 스프링 데이터 JPA는 다양한 유형의 반환 타입을 지원한다. List findListByUsername(String username); //컬렉션 Member findMemberByUsername(String username); //단건 Optional findOptinalByUsername(String username); //단건 Optional 페이징 조건 검색 조건 : 나이 10살 정렬 조건 : 이름 내림차순 페이징 조건 : 첫번째페이지, 페이지 당 데이터 3건 순수 JPA에서 페이징을 하는 방법 //순수 JPA 페이징 public List findByPage(int age,int offset, int limit) { return em.createQuery("select m from Member m.. 2021. 4. 23. [DataJPA] @Query, 레포지토리에 쿼리를 정의 메소드명으로 쿼리를 생성하는 방법은 메소드명이 너무 길어질 수 있다는 단점이 있다. 지금 소개하는 방법은 복잡한 JPQL을 인터페이스안에 있는 메서드에 바로 적을 수 있고 메서드명은 짧게 할 수 있다. public interface MemberRepository extends JpaRepository { //NamedQuery @Query(name = "Member.findByUsername") List findByUsername(@Param("username") String username); //레포지토리에서 쿼리 삽입 @Query("select m from Member m where m.username = :username and m.age = :age") List findUser(@Param("u.. 2021. 4. 14. [Data JPA] 쿼리 메소드 (메소드명만으로 구현이 가능?!) 만약, JpaRepository 공통의 기능이 아닌 도메인에 특화된 기능을 만드려면 어떻게 해야할까? 이건 우리가 구현해야할까? 아니다! 구현하지 않아도 동작한다. => 쿼리메소드 이용하면 가능 쿼리메소드 기능 3가지 메소드 이름으로 쿼리를 생성한다. 메소드 이름으로 JPA NamedQuery를 호출한다. @Query 어노테이션을 사용해서 레포지토리 인터페이스에 쿼리를 직접 정의할 수 있다. 1. 메소드 이름으로 쿼리를 생성한다. 원래는 이렇게 쿼리를 짜야한다. //회원명과 나이 비교 후 조회 public List findByUsernameAndAgeGreaterThen(String username, int age) { return em.createQuery("select m from Member m w.. 2021. 4. 14. [DataJPA] 스프링 데이터 JPA 인터페이스 공통 인터페이스 설정 JavaConfig 설정 @configuration @EnableJpaRepositories(basePackages = "jpabook.jpashop.repository") //study.datajpa.repository public class AppConfig {} 스프링 부트 사용 시 @SpringBootApplication 위치를 지정하면 (해당 패키지와 하위 패키지를 인식해준다) 스프링 부트 사용 시에는 생략이 가능하다. 만약 위치가 달라지면 @EnableJpaRepositories 필요 어떻게 구현체(메소드 등)없이 save, find 등 기능을 할 수 있는걸까? 스프링 데이터 JPA가 구현 클래스를 대신 생성한다. Spring Data JPA가 로딩시점에 레포지토리에서 구.. 2021. 4. 14. 이전 1 다음