728x90

SpringDataJPA 5

페이징과 정렬

스프링 데이터 JPA는 쿼리 메소드에 페이징과 정렬 기능을 사용할 수 있도록 2가지 특별한 파라미터를 제공한다. org.springframework.data.domain.Sort: 정렬 기능 org.springframework.data.domain.Pageable: 페이징 기능(내부에 Sort 포함) 파라미터에 Pageable을 사용하면 반환 타입으로 List나 org.springframework.data.domain.Page를 사용할 수 있다. Page를 사용하면 스프링 데이터 JPA는 페이징 기능을 제공하기 위해 검색된 전체 데이터 건수를 조회하는 count 쿼리를 추가로 호출한다. //count 쿼리 사용 Page findByName(String name, Pageable pageable); //c..

SpringDataJPA 2022.06.21

@Query 와 파라미터 바인딩

리포지토리 메소드에 직접 쿼리를 정의하려면 @org.springframework.data.jpa.repository.Query 어노테이션을 사용한다. 이 방법은 실행할 메소드에 정적 쿼리를 직접 작성하므로 이름 없는 Named 쿼리라 할 수 있다. 또한 JPA Named 쿼리처럼 애플리케이션 실행 시점에 문법 오류를 발견할 수 있는 장점이 있다. public interface MemberRepository extends JpaRepository { @Query("select m from Member m where m.username = ?1") Member findByUsername(String username); } 파라미터 바인딩 스프링 데이터 JPA는 위치 기반 파라미터 바인딩과 이름 기반 파라미터..

SpringDataJPA 2022.06.21

JPA Named Query(메소드 이름으로 JPA Named 쿼리 호출)

스프링 데이터 JPA는 메소드 이름으로 JPA Named 쿼리를 호출하는 기능을 제공한다. JPA Named 쿼리의 이름 그대로 쿼리에 이름을 부여해서 사용하는 방법인데, 어노테이션이나 XML에 쿼리를 정의할 수 있다. @Entity @NamedQuery( name="Member.findByUsername", query="select m from Member m where m.username = :username") public class Member { ... } 이렇게 정의한 Named 쿼리를 JPA에서 직접 호출하려면 아래처럼 코드를 작성해야 한다. public class MemberRepository { public List findByUsername(String username){ ... Lis..

SpringDataJPA 2022.06.20

스프링 데이터 JPA 설정

필요 라이브러리 스프링 데이터 JPA는 spring-data-jpa 라이브러리가 필요하다. org.springframework.data spring-data-jpa 1.8.0.RELEASE 환경설정 스프링 설정에 XML을 사용하면 를 사용하고 리포지토리를 검색할 base-package를 적는다. 참고로 해당 패키지와 그 하위 패키지를 검색한다. 스프링 설정에 JavaConfig를 사용하면 아래와 같이 org.springframework.data.jpa.repository.config.EnableJpaRepositories 어노테이션을 추가하고 basePackages에는 리포지토리를 검색할 패키지 위치를 적는다. @Configuration @EnableJpaRepositories(basePackages =..

SpringDataJPA 2022.06.20

스프링 데이터 JPA 소개(부재 - 편리한 개발)

스프링 데이터 JPA는 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트 이 프로젝트는 데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 세련된 방법으로 해결한다. 그 방법은 리포지토리를 개발할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해준다. 따라서, 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있다. public interface MemberRepository extends JpaRepository{ Member findByUsername(String username); } public interface ItemRepository extends JpaRepositor..

SpringDataJPA 2022.06.19
728x90