백엔드/Spring

[Spring] Spring Data JPA

kwang2134 2024. 9. 22. 14:48
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