Spring Data JPA
- JPA를 사용해서 관계형 DB와 쉽게 연동하기 위한 Spring에서 제공하는 Spring ORM Module중 하나
- Spring에서 CRUD 구현체를 제공
- 이를 통해 boiler-pate DAO코드를 최소화
- entity type과 primary key의 정보만 넣어주면 자동으로 dao클래스를 생성해줌
- CrudRepository 클래스를 상속받아 추가적인 메소드만 구현해주면 된다.
Spring Data JPA에서 제공하는 3가지 인터페이스
1) CrudRepository
- 주로 기본적인 CRUD연산에 대한 기능 제공
2) PagingAndSortingRepository
- CrudRepository를 상속 받아 추가적인 페이징 처리 기능과 정렬 기능을 제공
3) JpaRepository
- pagingAndSortingRepository를 상속받아 추가적인 persistence context를 flush기능과 배치 속 레코드를 삭제하는 추가적인 기능을 제공
Hibernate와 Spring Data JPA의 비교
Hibernate를 사용하여 구현한 DAO클래스
Spring Data JPA를 사용하여 구현한 DAO클래스
Spring Data JPA의 추가적인 기능 구현
- 위의 그림과 같이 인터페이스에 메소드만 정의해주면 추가적인 기능을 구현할 수 있다.
- ‘findBy + 필드이름’이름으로 메소드만 정의해주면 자동으로 구현 가능하다.
- 예를 들어, findByProductname(String productName)메소드만 구현해주면 Spring Data JPA는 자동으로 “where productName = ?” 다음과 같은 where절을 쿼리에 추가해준다.