티스토리 뷰
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 인터페이스
JpaRepository는 CRUD처리를 위한 공통 인터페이스
JpaRepository를 extends하여 아래와 같이 인터페이스를 생성
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 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- JPA Repository query keywords
- SQL #TABLE생성 #SQL제약조건
- SQL명령어 #SQL
- thymeleaf
- SQL #SQLJOIN #JOIN #INNERJOIN #OUTERHJOIN
- SELETE
- S-Core
- JPA #JPARepository
- DTO #Entity
- 이벤트폰트 #이벤트용폰트 #디자인폰트 #디자인서체 #웹폰트
- 세방고딕체 #웹폰트 #무료폰트 #무료웹폰트 #디자인폰트 #이벤트폰트 #디자인폰트 #타이틀용폰트
- SELECTANY #SELECTALL
- JPA Auditing #JPA
- JPA #
- JPA #JPAEntity #JPA연관관계
- JPA #JPA설정
- JPA #JPAEntity
- Hibernate #ORM
- 카페24폰트 #무료폰트 #무료웹폰트
- 무료폰트 #무료웹폰트 #평창평화체 #평화체 #이벤트용서체 #이벤트서체 #디자인폰트
- ORM종류
- 지마켓산스(Gmarket Sans)체 #지마켓산스 #Gmarketfont #GmarketSans #무료폰트 #타이틀폰트 #디자인폰트 #웹폰트
- 나눔폰트 #네이버글꼴 #네이버폰트 #고딕폰트 #본문폰트 #제목폰트 #무료폰트 #디자인폰트 #웹폰트
- S-CoreDream
- Thymeleaf #타임리프
- DB #DBCREATE #DBDROP #DBBAKUP
- 프리텐다드폰트 #고딕폰트 #무료폰트 #타이틀용폰트 #고딕 #웹폰트 #디자인폰트
- SQL #INSERTINTO #DELETE #UPDATE
- JDBC #DBMS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함