공부를 하다보니 CrudRepository와 JpaRepository 2개의 Repository 인터페이스에서 비슷하게 사용하는 것을 보고 차이점이 무엇인지 궁금해져서 찾아보게 되었습니다. 이 인터페이스는 둘 다 Spring Data JPA가 제공하는 인터페이스로, 두 인터페이스 모두 데이터 액세스 계층의 코드를 간결하게 만들기 위해 제공되지만, 제공하는 기능 및 상속 관계에 차이가 있습니다.
🏷️ CrudRepository
@Repository
public interface UserRepository extends CrudRepository<User, Long> {
// ...
}
CRUDRepository는 기본 CRUD(Create, Read, Update, Delete) 작업을 지원합니다. 그래서 주로 기본 CRUD 작업에 중점을 둔 데이터 액세스를 위해 사용됩니다.
🏷️ JpaRepository
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// ...
}
JpaRepository는 CrudRepository와 PagingAndSortingRepository를 확장(상속)하므로, CRUD 작업 및 페이징 및 정렬 관련 메서드를 모두 포함합니다. 추가적으로 JPA 관련 메서드(예: flush(), deleteInBatch(), getOne())를 제공하여 JPA에 특화된 작업을 수행할 수 있습니다. 따라서, JpaRepository를 사용하면, 페이징, 정렬 및 JPA의 다른 고급 기능을 쉽게 사용할 수 있습니다.
🏷️ 결론
- CrudRepository는 기본적인 CRUD 작업을 수행하는데 중점을 둔 인터페이스입니다.
- JpaRepository는 CrudRepository의 모든 기능에 추가로 JPA 관련 고급 기능 및 페이징, 정렬 기능까지 제공하는 인터페이스입니다.
따라서 단순 CRUD작업만 한다면 CrudRepository를 사용하면 되고, CRUD작업에 더해 페이징, sorting 등을 사용하려면 JpaRepository를 사용하면 됩니다.
📖 Reference
'코딩 공부 > web & Java' 카테고리의 다른 글
[Java] Comparable과 Comparator (0) | 2025.04.04 |
---|---|
[Java] Stream (0) | 2025.04.02 |
[Mockito] ArgumentMatchers 및 any,eq (1) | 2024.10.21 |
[JPA] @PrePersist와 @PreUpdate (0) | 2024.10.18 |
[JPA] @GeneratedValue의 GenerationType에 AUTO, IDENTITY 차이 (0) | 2024.10.17 |