https://jaehoney.tistory.com/250 게시글을 보고 정리한 글입니다.
Spring Data JPA를 사용하기 위해서는
`Repository`를 포함하여 `CrudRepository/PagingAndSortingRepository/JpaRepository` 중 하나를 상속 받아서 사용하면 된다.
그래서 우리는 흔히 가장 많은 기본 메서드를 지원해주는 JpaRepository를 사용해서 Spring Data JPA를 사용해 왔다.
그런데 Repository를 상속 받아 사용하는 것을 권장한다고 한다. 왜?
Repository를 살펴보자.
구현된 메서드가 전혀 존재하지 않는다. 따라서, 그 어떤 기본적인 편의 메서드를 지원해주지 않는다는 것이다.
그런데 왜 JpaRepository가 아니라, 최상위 인터페이스인 Repository를 사용해야 하라고 할까?
- Repository의 역할(책임)을 명확히 구분할 수 있다.
- 불필요한 메서드를 제공하지 않음으로서 시스템이 훨씬 간단명료해진다
- 직접 선언한 메서드에 대해서만 외부에 개방된다.
- Application 계층에서 Repository(Domain 계층)에 어떤 메시지를 보낼 수 있는 지 한눈에 파악할 수 있게 된다.