1. 공통 인터페이스 설정
- @EnableJpaRepositories(basePackage = "study.datajpa.repository") 이런식으로 레포지토리 인터페이스의 위치를 잡아줘야 한다.
- 부트를 사용시, @SpringBootApplication 위치부터 하위패키지를 모두 인식하기 때문에 별다른 설정없이 레포지토리 인터페이스를 사용할 수 있다.
- public interface ..... extends JpaRepository<Entity, PK>
- 구현체가 없는데 어떻게 동작을하느냐?
- extends JpaRepository 가 있으면 Spring Data JPA가 인터페이스에 대해서 프록시 구현체를 만든 뒤 DI 받기 때문에 사용할 수 있다.
- @Repository 생략 가능
- 컴포넌트 스캔을 Spring Data JPA 가 자동으로 처리해줌
- @Repository 기능
- 컴포넌트 스캔
- JPA의 예외를 스프링에서 공통적으로 처리할 수 있는 예외로 변환해주는 역할도 지원
- 구현체가 없는데 어떻게 동작을하느냐?
2. 공통 인터페이스 분석
- save(S) : 새로운 엔티티를 저장하고, 이미 있는 엔티티는 병합한다.
- delete(T) : 삭제
- findById(ID) : 엔티티를 하나 조회한다.
- getOne(ID) : 엔티티를 프록시로 조회한다. entityManager.getReference()
- findAll(..) : 모든 엔티티를 조회한다. (Paging, Sorting 가능)
'강의 정리 > 스프링 데이터 JPA' 카테고리의 다른 글
3. 확장 기능 (0) | 2021.01.14 |
---|---|
2. 쿼리 메소드 기능 (0) | 2021.01.10 |