728x90
반응형
728x90
Spring Data JPA
- JPA를 보다 쉽게 사용할 수 있도록 도와주는 프레임워크
- 데이터베이스와의 상호작용을 단순화하고, 반복적인 작업을 줄임
- 복잡한 쿼리를 작성하지 않고도 CRUD(Create, Read, Update, Delete) 작업을 쉽게 수행할 수 있음
접근
- 스프링 데이터 JPA는 리포지토리 인터페이스를 통해 데이터 접근을 제공
- JpaRepository 또는 CrudRepository를 상속받아 필요한 메서드를 정의 (JpaRepository는 CrudRepository의 기능을 포함)
사용 방법
- JpaRepository를 상속받아 제네릭은 엔티티 타입과 식별 자로 사용될 데이터 타입을 정의
public interface MemberRepository extends JpaRepository<Member, Long>
상속 구조
- Repository <<Interface>> - 최상위 인터페이스
- 단순 Repository를 정의한 인터페이스
- Repository <T, ID> 제네릭 엔티티 타입과 식별 자 정의
- CrudRepository <<Interface>> - Repository를 상속받는 인터페이스
- 기본적인 CRUD 제공
- PagingAndSortingRepository <<Interface>> - Repository를 상속받는 인터페이스
- 페이징과 정렬 기능이 추가된 CRUD 리포지토리
- QueryByExampleExecutor <<Interface>> - 예제 기반 검색 인터페이스
- 예제 객체를 기반으로 검색을 제공하는 인터페이스
- JpaRepository <<Interface>> - ListCrudRepository, ListPagingAndSortingRepository, QueryByExampleExecutor를 상속받는 인터페이스
- 스프링 데이터 JPA 사용 시 상속 받아 사용하는 인터페이스
주요 메서드
- save(S entity): 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합
- delete(T entity): 엔티티 하나를 삭제 -> 내부에서 EntityManager.remove() 호출
- findById(ID id): 엔티티 하나를 조회 -> 내부에서 EntityManager.find() 호출
- getReferenceById(ID id): 엔티티를 프록시로 조회 : 엔티티를 프록시로 조회 -> 내부에서 EntityManager.getReference() 호출
- findAll(…): 모든 엔티티 조회 -> 정렬(Sort)이나 페이징(Pageable) 조건을 파라미터로 사용 가능
실전! 스프링 데이터 JPA 강의 | 김영한 - 인프런 (inflearn.com) 강의 내용 참고
728x90
'백엔드 > Spring' 카테고리의 다른 글
[Spring] Spring Data Jpa 확장 기능 (0) | 2024.09.24 |
---|---|
[Spring] 쿼리 메서드 (0) | 2024.09.23 |
[Spring] JPA 컬렉션 조회 최적화 & OSIV (1) | 2024.09.21 |
[Spring] JPA 지연 로딩 & 조회 성능 최적화 (0) | 2024.09.20 |
[Spring] API (0) | 2024.09.19 |