스프링 데이터 JPA 를 사용하면 인터페이스를 만들고, JpaRepository<엔티티 타입, PK 타입> 를 상속한다고 설정하는것만으로도 save, findById, findAll, delete 등 다양한 기본적인 기능들을 사용할 수 있다.
어떻게?
JpaRepository 를 상속하는 Repository 인터페이스를 주입받아 getClass() 를 해보면, 프록시 객체가 들어 있는 것을 확인할 수 있다.
어느 엔티티를 사용할 것인지만 설정해주면 데이터 JPA가 구현 클래스를 만들어 주입해주는 것이다.
@Repository 어노테이션 없이도 데이터 JPA가 알아서 컴포넌트 스캔, 예외 처리 등을 해준다.
공통 인터페이스
특정 DB에서 사용할 수 있는 기능들과 공통적으로 사용할 수 있는 기능들을 묶어 사용할 수 있는 인터페이스
구성 (데이터 JPA)
주요 메서드
save : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합
delete : 엔티티 하나를 삭제, 내부에서 em.remove 호출
findById : 엔티티 하나를 조회, 내부에서 em.find 호출
getOne : 엔티티를 프록시로 조회, 내부에서 em.getReference 호출
findAll: 모든 엔티티 조회, 정렬이나 페이징 조건을 파라미터로 지정할 수도 있음
공통 메서드말고 도메인에 특화된 메서드를 구현하고 싶다면 어떻게 해야할까?
-> 쿼리 메소드 기능 (이후에 다룸)