티스토리 뷰

WEB/기타

[JPA] 4. Repository

silverline79 2024. 1. 23. 19:47

4. Repository

Repository

Spring Data 저장소 추상화의 중심 인터페이스,

관리할 도메인 클래스와 도메인 클래스의 ID 유형을 유형 인수로 사용

주로 작업할 유형을 캡처하고 이 인터페이스를 확장하는 인터페이스를 검색하는 데도움이 되는 마커 인터페이스 역할

CrudRepository : CRUD 기능 제공

PagingAndSortingRepository : 페이징 및 레코드 정렬을 수행하는 방법을 제공

JpaRepository : 지속성 컨텍스트 플러시 및 일괄 처리 레코드 삭제와 같은 JPA 관련 메소드 제공

일반적으로 정렬 및 페이징이 필요한지 여부에 따라 CrudRepository 또는

PagingAndSortingRepository 를 사용하는 것이 가장 좋습니다 .

Repositories
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#preface
Interface Repository<T,ID>
https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/Repository.html
Interface CrudRepository<T,ID>
https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html
Interface PagingAndSortingRepository<T,ID>
https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/PagingAndSortingRepository.html

CrudRepository인터페이스

public interface CrudRepository<T, ID> extends Repository<T, ID> {
<S extends T> S save(S entity);
Optional<T> findById(ID primaryKey);
Iterable<T> findAll();
long count();
void delete(T entity);
boolean existsById(ID primaryKey);
// more functionality omitted
.}
<S extends T> S save(S entity); 주어진 엔티티를 저장
Optional<T> findById(ID primaryKey); 지정된 ID로 식별되는 엔터티를 반환
Iterable<T> findAll(); 모든 엔터티를 반환
long count(); 엔터티 수를 반환
void delete(T entity); 지정된 엔티티를 삭제
boolean existsById(ID primaryKey); 주어진 ID를 가진 엔터티가 있는지 여부를
나타냄

 

PagingAndSortingRepository 인터페이스

public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
Iterable<T> findAll(Sort sort);
Page<T> findAll(Pageable pageable);
}

 

JpaRepository 인터페이스

JpaRepositoryCRUD처리를 위한 공통 인터페이스

JpaRepositoryextends하여 아래와 같이 인터페이스를 생성

public interface MemberRepository extends JpaRepository<Member, Long>{}

Spring Data JPA에서 제공하는 JpaRepository 인터페이스를 상속하기만 해도 되며,인터페이스에 따로 @Repository등의 어노테이션을 추가할 필요가 없다.

JpaRepository를 상속받을 때는 사용될 Entity 클래스와 ID 값이 들어가게 된다.extends JpaRepository<엔티티 클래스이름 , ID 필드 타입>

JpaRepository를 단순하게 상속하는 것만으로 위의 인터페이스는 Entity 하나에 대해서 아래와 같은 기능을 제공

 method  기능
 save()  레코드 저장 (insert, update)
 findOne()  primary key로 레코드 한건 찾기
 findAll()  전체 레코드 불러오기. 정렬(sort), 페이징(pageable) 가능
 count()  레코드 갯수
 delete()  레코드 삭제

 

'WEB > 기타' 카테고리의 다른 글

[JPA] 6. JPA Auditing  (0) 2024.01.23
[JPA] 5. Repository query keywords  (0) 2024.01.23
[JPA] 3. Entity - 연관관계 매핑  (0) 2024.01.20
[JPA] 3. Entity - 설정, 속성  (0) 2024.01.20
[JPA] 2. JPA 사용 설정  (0) 2024.01.20
댓글