본문으로 바로가기

Repository 인터페이스 정의하기

 

사용 할 기능을 자신이 직접 정의하고 싶다고 한다면

@RepositoryDefinition 어노테이션에 엔티티,id값을 주고 직접 자신이 메소드를 구현 하면 된다.

 

하지만 스프링 데이터 JPA가 자동으로 만들어주는 JpaRepository를 사용 한 것과 달리

우리가 직접 작성한 코드이니 테스트 과정을 거쳐야 한다.

 

 

테스트를 돌리면 성공 하는것을 볼 수 있다.

 

그럼 만약 save랑 findAll 은 기본적으로 가진 Repository를 여러개 정의 하고 싶다고 하면 어떻게 해야 할 까?

 

공통의 인터페이스를 하나 더 만들어주고 상속 시키면 된다.

 

@NoRepositoryBean으로 이 인터페이스 자체가 빈으로 등록되지 않게 처리를 해주고

단지 Repository의 메소드를 정의 하는 인터페이스 라는 정보를 부여해준다.

그리고 paging, crud, jpa reposiotry 등등의 부모가 되는

아무한 기능이 없는 마커 인터페이스 Repository를 상속 받으면 된다.

Id에는 Serializable로 해줘야 한다.

 

그 후 이렇게 상속 받으면 끝!!