Spring Data JPA
는 Java Persistence API (JPA)와 Spring Framework를 기반으로 한 데이터 접근 계층을 간단하고 일관되게 구현할 수 있도록 지원하는 모듈이다.
기존에 Mybatis를 사용하는 것과 차이가 있다면 Mybatis는 Service 계층에서 Mapper
로 요청을 보내 DB와 연동을 하지만 JPA는 Repository
로 요청을 보낸다.
<aside>
📌 Repository → 데이터베이스를 추상화한 인터페이스
Spring Data JPA는 여러 가지 기본적인 CRUD 작업을 제공하는 CrudRepository
, JpaRepository
등 의 인터페이스를 제공
</aside>
사용법 자체는 간단하게 인터페이스를 선언 후, JpaRepository
를 상속 받으면 된다.
JpaRepository
는 그 위의 PagingAndSortingRepository
, CrudRepository
등 상속 받고 있어 관련 메소드들을 전부 사용할 수 있다.
PagingAndSortingRepository
→ 페이징 및 객체 정렬 지원CrudRepository
→ CRUD(Create, Read, Update, Delete) 기능을 갖춘 인터페이스public interface CategoryRepository extends JpaRepository<Category, Integer> {
}
단, 사용할 때 JpaRepository<Entity 클래스, Pk 타입> 으로 상속하면 기본적인 CRUD 메소드가 자동으로 생성
인터페이스 | 설명 |
---|---|
Repository | 따로 기능은 없음 |
CrudRepository | 주로 CRUD 기능을 제공 |
PagingAndSortingRepository | 검색 및 검색 결과를 페이징 처리하고자 할 경우 사용한다 |
JpaRepository | 지속성 컨텍스트 플러시 및 배치에서 레코드 삭제와 같은 |
일부 JPA 관련 추가 방법들을 제공한다. | |
쿼린 메소드란?
JPQL을 메소드로 대신 처리할 수 있도록 제공하는 기능
메소드의 이름으로 필요한 쿼리를 만들어주는 기능으로 find + 엔티티 이름 + BY+ 변수 이름
과 같이 네이밍 룰만 알면 사용 가능