본문 바로가기
코딩 공부/web & Java

[JPA] CRUDRepository와 JPARepository

by 현장 2025. 4. 1.

공부를 하다보니 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

normalvector.log