개요
실습 도중 CrudRepository를 사용하게 되었는데요, JpaRepository와 어떻게 다른지 알아보도록 하겠습니다.
1. 상속 구조
클래스 다이어그램을 살펴보면 JpaRepository는 CrudRepository의 자식들을 상속하고 있는 것을 확인할 수 있습니다.
그 말은 즉 CrudRepository에 있는 모든 기능들은 JpaRepository에 상속되었다는 뜻인데요, 그러면 이 둘을 사용할 때에 차이점이 있을까요?
2. 둘의 차이는
CrudRepository
CrudRepository는 기본적인 CRUD 연산을 제공합니다. 이는 곧 스프링 데이터 저장소의 기본 인터페이스로 JPA 뿐만 아니라 MongoDB, Cassandra 등과 같은 다른 유형의 데이터 저장소에서도 사용할 수 있습니다.
JpaRepository
JpaRepository는 CrudRepository를 확장하며, JPA에 특화된 기능을 추가적으로 제공합니다. 예를 들어, 페이징 및 정렬, flush 및 batch 연산과 같은 추가적인 JPA 관련 메서드가 있습니다.
3. 언제 어떤 것을 사용해야 되는가
우선 기본적인 CRUD 연산만 필요한 경우 CrudRepository를 사용하면 됩니다. 특히 JPA 이외의 다른 데이터 저장소를 사용할 때 유용합니다.
만약 JPA와 통합된 애플리케이션에서 추가적인 JPA 기능을 활용하고자 하는 경우 JpaRepository를 사용합니다. 페이징, 정렬, batch 연산과 같은 JPA에 특화된 기능이 필요한 경우에 적합합니다.
4. 결론
개인적으로 JpaRepository는 만능이라고 생각되어 무분별하게 남용했는데요, 이번 내용을 공부하면서 적절한 저장소를 상속하는 것 또한 중요하다는 것을 깨달았습니다.