Repository

JpaRepository는 PagingAndSortingRepository를 상속받고있고, PagingAndSortingRepository는 CrudRepository를 상속받고있고, CrudRepository는 Repository를 상속받고 있다.

		Repository
        
              CrudRepository
              
        PagingAndSortingRepository
        
               JpaRepository
               

Repository: 마커. 특별한 기능은 없음
CrudRepository: 하나 또는 여러개의 엔티티 저장, 엔티티의 데이터를 가져오는 등 기본적인 CRUD 기능을 제공
PagingAndSortingRepository: page에 관한 기능
JpaRepository: 스프링 데이터 JPA에 관한 기능

Repository 인터페이스 정의하기

JpaRepository를 상속받으면 여러가지 기능들이 모두 들어오지만, 그게 싫다면 repository를 직접 만들 수가 있긴한다.

@RepositoryDefinition를 붙여주고, 메서드로 정의해주면 된다.
스프링 데이터 JPA가 기본적인 것은 자동으로 구현해줄 수 있다.(정의해준 메서드에 관련된 것만)

이런식으로 하면, 특정 repository에만 적용되기 때문에 공통으로 필요한 기능들은 아래와같이 하나로 묶은 다음 상속을 사용해서 사용할 수도 있다. 이때 꼭 상위 repository는 @NoRepositoryBean을 붙여줘야한다.

0개의 댓글