Spring Data JPA
스프링 데이터 JPA
JavaConfig 설정
@Configuration
@EnableJpaRepositories(basePackages = "exmaple.project.repository")
Spring Boot 사용시 생략가능. (@SpringBootApplication 해당패키지와 하위 패키지에서 자동으로 인식함.)
스프링 데이터 JPA 기반 Repository
import org.springframework.data.jpa.repository.JpaRepository;
public interface MemberRepository extends JpaRepository<Member, Long> {
}
JpaRepository 인터페이스는 제네릭은 <엔티티 타입, 식별자타입>으로 설정 할 수 있다.
- 공통 CRUD를 제공한다.
- 엔티티가 복수키 구성일때 @IdClass를 사용한다면 식별자 타입에 @IdClass를 바로 넣어서 사용 가능하다.
@Repository annotation 생략 가능
- 컴포넌트 스캔을 스프링 데이터 JPA가 자동으로처리함
- JPA 예외를 스프링 예외로 변환하는 과정도 자동으로 처리함
주요메서드
- save(s) : 새로운 엔티티는 persist하고 이미 있는 엔티티는 merge한다.
- delete(t) : 엔티티 하나를 삭제한다. EntityManager.remove() 호출
- findById(ID) : 엔티티 하나를 조회한다. EntityManager.find() 호출
- getOne(ID) : 엔티티를 프록시로 조회한다. EntityManager.getReference()호출
- findAll() : 모든 엔티티를 조회한다. 정렬(Sort)과 페이징(Pageable) 조건을 파라미터로 제공한다.