spring data jpa repositorys로 작업하기(핵심 개념 및 Query methods)
핵심개념
스프링 데이터 저장소 추상화의 중심 Repository 인터페이스는 다음과 같습니다.
도메인 클래스의 ID 유형뿐만 아니라 관리 할 도메인 클래스도 유형 인수로 사용합니다. 이 인터페이스는 주로 작업 할 유형을 캡처하고이 인터페이스를 확장하는 인터페이스를 찾는 데 도움이되는 마커 인터페이스로 사용됩니다. CrudRepository 인터페이스는 관리되는 엔티티 클래스에 대한 정교한 CRUD 기능을 제공합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
publicinterfaceCrudRepository<T, ID extendsSerializable> extendsRepository<T, ID> {
<S extendsT> S save(S entity); // (1)
Optional<T> findById(ID primaryKey); // (2)
Iterable<T> findAll(); // (3)
longcount(); // (4)
voiddelete(T entity); // (5)
booleanexistsById(ID primaryKey); // (6)
// … more functionality omitted. }
지정된 엔티티를 저장합니다.
지정된 ID로 식별되는 엔티티를 리턴합니다.
모든 엔터티를 반환합니다.
엔티티의 수를 돌려줍니다.
지정된 엔티티를 삭제합니다.
주어진 ID를 가진 엔티티가 존재하는지 여부를 나타냅니다.
맨 위에 User 엔티티에 Paging 그리고 Sorting 된 액세스를 쉽게하기위한 CrudRepository 인터페이스에 추가 메소드가 추가 된 PagingAndSortingRepository 인터페이스가 있습니다.
1 2 3 4 5 6 7 8 9
publicinterfacePagingAndSortingRepository<T, ID extendsSerializable> extendsCrudRepository<T, ID> {
Iterable<T> findAll(Sort sort);
Page<T> findAll(Pageable pageable); }
User의 페이지 크기가 20 인 두 번째 페이지에 액세스하려면 다음과 같이 할 수 있습니다.
1 2 3 4
PagingAndSortingRepository<User, Long> repository = // … get access to a bean Page<User> users = repository.findAll(PageRequest.of(1, 20));
이 예에서는 JPA 네임 스페이스가 사용됩니다. 다른 저장소에 대한 저장소 추상화를 사용하는 경우 이를 저장소 모듈의 적절한 네임 스페이스 선언으로 변경해야합니다.
또한 annotated class 의 패키지가 기본적으로 사용되기 때문에 JavaConfig 변형은 패키지를 명시 적으로 구성하지 않습니다. 검사 할 패키지를 사용자 정의하려면 basePackage…데이터 저장소 별 저장소의 @Enable${store}Repositories주석 중 하나를 사용하십시오 .