Redis

CrudRepository 와 JPARepository의 차이

MIN우 2022. 12. 29. 15:04
728x90

CrudRepository

  • CRUD 기능을 제공하는 인터페이스.
  • org.springframework.data.repository
  • 인터페이스 Repository를 확장함.
  • 사용
더보기

@Repository public interface PersonRepository extends CrudRepository<Person, Long> { // ... }

CrudRepository의 메서드

  • long count()
    • 가용 entity의 수를 반환함
    • 리포지토리의 데이터 개수 확인

Delete

  • void delete(T entity)
    • 주어진 entity를 삭제함
    • entity가 null이면 IllegalArgumentException을 던짐
  • void deleteById(ID id)
    • 주어진 id를 가진 엔티티를 삭제함
    • id가 null이면 IllegalArgumentException을 던짐
  • void deleteAll()
    • 리포지토리에 의해 관리되는 모든 엔티티를 삭제함
  • void deleteAll(Iterable<? extends T> entities)
    • 주어진 엔티티들을 삭제함
    • entities 및 entities들 중 하나라도 null이어서는 안 됨
    • entities 및 entities들 중 하나라도 null이면 IllegalArgumentException을 던짐

Read (조회)

  • Iterable<T> findById(ID id)
    • 주어진 id로 엔티티를 검색함
    • 반환 : 해당 id의 엔티티. (검색결과가 없다면 Optional#empty()반환)
    • id가 null이면 IllegalArgumentException을 던짐
  • boolean existsById(ID id)
    • 주어진 id를 가진 엔티티가 존재하는지 반환함
    • 반환 : 존재하면 true, 아니면 false
    • id가 null이면 IllegalArgumentException을 던짐
  • Iterable<T> findAll()
    • 리포지토리의 모든 인스턴스(엔티티)를 반환함 (Iterable<T>타입으로)
  • Iterable<T> findAllById(Iterable<ID> ids)
    • 리포지토리에서 T타입이면서 주어진 ID들에 해당하는 모든 인스턴스를 T타입으로 반환함
    • 리턴되는 요소들의 순서는 보장되지 않음.
    • 어떤 id도 발견되지 않으면, 어떤 엔티티도 반환되지 않음.
    • 파라미터 : ids나 ids중 하나라도 null이어서는 안 됨.
    • ids나 ids중 하나라도 null이면 IllegalArgumentException을 던짐

Create (저장)

  • <S extends T> S save(S entity)
    • 주어진 엔티티를 저장함
    • 저장된 엔티티를 반환함
    • 주어진 엔티티가 null이면 IllegalArgumentException을 던짐
  • <S extends T> Iterable<S> saveAll(Iterable<S> entities)
    • 주어진 모든 엔티티들을 저장함
    • 저장된 엔티티들을 반환함
    • 주어진 엔티티들(또는 엔티티들 중 하나)가 null이면 IllegalArgumentException을 던짐

[JPA] JpaRepository와 CrudRepository의 차이

 

둘 다 Repository를 확장한 ''인터페이스''라는 공통점이 있다.

CrudRepository

  • CRUD기능을 주로 제공한다

JpaRepository

  • JpaRepository는 CrudRepository와 PagingAndSortingRepository를 extends한 인터페이스이다.
  • CrudRepository(CRUD)와 PagingAndSortingRepository(페이징 및 정렬)가 제공하는 모든 기능을 제공하고, 추가적으로 JPA에 특화된 메서드를 제공한다.

결론

  • 단순 CRUD작업만 한다면 CrudRepository를 사용한다.
  • CRUD작업에 더해 페이징, sorting, jpa기능 등을 사용하려면 JpaRepository를 사용한다.

 

 

 

 

728x90