728x90
JpaRepository를 변경만 하면 DB를 변경할 수 있다.

JpaRepository 분석
- 여러 기능이 있다.
- package org.springframework.data.jpa.repository; 안에 존재한다.
- PagingAndSortingRepository<T, ID>, QueryByExampleExecutor <T>를 상속한다.
PagingAndSortingRepository 분석
- package org.springframework.data.repository; 안에 존재한다.
- 페이징은 DB에 상관없이 공통으로 해당 기능을 사용할 수 있다.
- CrudRepository<T, ID> 를 상속한다.
CrudRepository 분석
- Repository를 상속한다.
제네릭 타입
- T : 엔티티
- ID : 엔티티의 식별자 타입
- S : 엔티티와 그 자식 타입
주요 메서드
- save(S) : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합한다.
- delete(T) : 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove() 호출
- findById(ID) : 엔티티 하나를 조회한다. 내부에서 EntityManager.find() 호출
- getOne(ID) : 엔티티를 프록시로 조회한다. 내부에서 EntityManager.getReference() 호출
- 가짜 프록시 객체를 가지고 온다.
- findAll(…) : 모든 엔티티를 조회한다. 정렬( Sort )이나 페이징( Pageable ) 조건을 파라미터로 제공할 수 있다.
도메인에 특화된 기능을 어떻게 해결할까?
public class MemberRepositoryImpl extends MemberRepository{
//이걸 다 구현 해야된다.
//내가 원하는 기능만 구현 해야되는데 다구현 하는 것을, 어떻게 해결 할까?
@Override
public List<Member> findByUsername(String username) {
return null;
}
@Override
public List<Member> findAll() {
return null;
}
....
}
참고: JpaRepository는 대부분의 공통 메서드를 제공한다.
728x90
'실전! 스프링 데이터 JPA' 카테고리의 다른 글
| Ch03. 쿼리 메소드 기능 - JPA NamedQuery (0) | 2021.12.26 |
|---|---|
| Ch03. 쿼리 메소드 기능 - 메소드 이름으로 쿼리 생성 (0) | 2021.12.26 |
| Ch02. 공통 인터페이스 기능 - 공통 인터페이스 설정 (0) | 2021.12.25 |
| Ch02. 공통 인터페이스 기능 - 순수 JPA 기반 리포지토리 만들기 (0) | 2021.12.25 |
| Ch01. 프로젝트 환경 설정 - 스프링 데이터 JPA와 DB 설정, 동작확인 (0) | 2021.12.24 |