Bibi's DevLog 🤓🍎
[JPA] CrudRepository의 메소드 & JpaRepository와 CrudRepository의 차이 본문
🖥 BE 백엔드/Spring 스프링
[JPA] CrudRepository의 메소드 & JpaRepository와 CrudRepository의 차이
비비 bibi 2021. 3. 20. 22:17[JPA] CrudRepository와 메서드
출처 : Spring docs
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의 차이
출처 : stackoverflow, 블로그. 감사합니다🙇♀️
둘 다 Repository
를 확장한 ''인터페이스''라는 공통점이 있다.
CrudRepository
- CRUD기능을 주로 제공한다
JpaRepository
JpaRepository
는CrudRepository
와PagingAndSortingRepository
를extends
한 인터페이스이다.CrudRepository
(CRUD)와PagingAndSortingRepository
(페이징 및 정렬)가 제공하는 모든 기능을 제공하고, 추가적으로 JPA에 특화된 메서드를 제공한다.
결론
- 단순 CRUD작업만 한다면 CrudRepository를 사용한다.
- CRUD작업에 더해 페이징, sorting, jpa기능 등을 사용하려면 JpaRepository를 사용한다.
'🖥 BE 백엔드 > Spring 스프링' 카테고리의 다른 글
[Spring Data JDBC, JPA] @Embeded란?, @Embeded 사용하기 (0) | 2021.04.30 |
---|---|
[Spring] HTTP method - PUT (0) | 2021.04.06 |
@RequestMapping 으로 중복URL 제거하기 (0) | 2021.03.17 |
[Spring, H2 database] 스프링 앱과 H2 데이터베이스 연결하기 (0) | 2021.03.15 |
Heroku로 스프링 앱 배포하기 (0) | 2021.03.15 |