BackEnd/Spring Data JPA

02. Spring Data JPA

hanseom 2021. 10. 25. 21:32
반응형

  Spring Data JPA는 JPA 기반 Repositories를 쉽게 구현할 수 있는 모듈입니다. 사용자 정의 파인더 메소드를 포함하여 Repository 인터페이스를 작성하면 Spring이 자동으로 구현을 제공합니다.

 

특징

  • Spring과 JPA 기반 Repositories 구축 지원
  • Querydsl 지원 및 type-safe JPA 쿼리
  • 도메인 클래스의 투명한 감사
  • Pagination 지원, 동적 쿼리 실행, custom data 접근 코드 통합 기능
  • 부트스트랩 시간에 @Query 어노테이션이 있는 쿼리의 유효성 검사
  • XML 기반 엔티티 매핑 지원
  • @EnableJpaRepositories를 도입하여 JavaConfig 기반 저장소 구성

 

JpaRepository 인터페이스

  JpaRepository 인터페이스는 공통 CRUD를 제공하며, Repository 인터페이스 > CrudRepository 인터페이스 > PagingAndSortingRepository 인터페이스 > JpaRepository 인터페이스 순으로 구성되어 있습니다.

// JpaRepository를 사용하는 인터페이스
public interface MemberRepository extends JpaRepository<Member, Long> {
}

  JpaRepository는 대부분의 공통 메소드를 제공합니다. 주요 메서드는 다음과 같습니다.

  (T : 엔티티, ID : 엔티티의 식별자 타입, S : 엔티티와 그 자식 타입)

  • save(S) : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합한다.
  • delete(T) : 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove() 호출
  • findById(ID) : 엔티티 하나를 조회한다. 내부에서 EntityManager.find() 호출
  • getOne(ID) : 엔티티를 프록시로 조회한다. 내부에서 EntityManager.getReference() 호출
  • findAll(…) : 모든 엔티티를 조회한다. 정렬( Sort )이나 페이징( Pageable ) 조건을 파라미터로 제공할 수 있다.

 

Sample Code

  링크된 GitHub 코드의 MemberRepository.java, TeamRepository.java는 Spring Data JPA 기반 Repository이며, MemberJpaRepository.java, TeamJpaRepository.java는 순수 JPA 기반의 Repository입니다.

 

TEST

반응형