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
'Redis' 카테고리의 다른 글
Lock 정리(낙관적 락과 비관적 락, 분산락, 데드락) 및 활용까지 (2) | 2023.07.22 |
---|---|
동시성문제 -> Redis Redisson (0) | 2023.07.02 |
Redis 용어정리 (0) | 2022.12.29 |
Redis_Crud_Example (0) | 2022.12.26 |
Redis 와 Spring boot 간단하게 연동 및 Postman 확인 (0) | 2022.12.23 |