공통 인터페이스 분석해보겠습니다.
JpaRepository
JpaRepository 의 패키지는 org.springframework.data.jpa.repository
입니다.
스프링 데이터 프로젝트는 기본적인 공통의 CRUD 를 제공하는 공통 프로젝트가 있고 JPA에 특화된 프로젝트가 있습니다.
JpaRepository 는 JPA의 특화된 라이브러리라서 spring-data-jpa 안에 들어있습니다.
PagingAndSortingRepository
PagingAndSortingRepository 의 패키지는 org.springframework.data.repository
입니다.
PagingAndSortingRepository 는 spring-data-commons 안에 들어있습니다. 페이징이나 소팅은 관계형 DB, 공고 DB, NoSQL 에서 비슷합니다. 그래서 PagingAndSortingRepository 란 공통 인터페이스가 제공이 됩니다.
Spring Data 란 공통의 프로젝트가 있고 JPA, redis, mongodb 등에 따라서 상세한 라이브러리들이 있습니다.
이 말은 나중에 DB 가 바뀌어도 PagingAndSortingRepository 에 있는 기능은 그대로 쓸 수 있다는 것이죠. (사실 DB를 바꾸는 것은 현실적으로 힘들고요, 유사한 인터페이스로 편하게 개발할 수 있다는 장점이 더 크죠.)
CrudRepository
Repository
<aside> ❗ 주의!
최신 스프링 데이터 JPA는 T findOne(ID)
이 Optional<T> findById(ID)
변경되었습니다.
</aside>