반응형
public interface MemberRepository extends JpaRepository<Member, Long> {
}
Spring Data JPA를 사용하면 위 처럼 JpaRepository 인터페이스를 상속받은 인터페이스만 있어도 CRUD 기능을 다 지원한다.
그렇다면 어떻게 인터페이스의 구현체가 없는데도 MemberRepository가 작동하는 걸까?
How ?
JpaRepository 인터페이스를 상속 받은 MemberRepository 클래스 타입을 찍어보면 다음과 같이 나온다.
memberRepository.getClass() => class com.sun.proxy.$ProxyXXX
Spring Data JPA가 JpaRepository 인터페이스를 상속받은 인터페이스를 보고 구현체를 만들어서 의존성 주입을 해준다.
즉, 우리는 인터페이스만 만들면 Spring Data JPA가 애플리케이션 로딩 시점에 구현 클래스를 다 만들어주는 것이다.
@Repository 생략 가능
Spring Data JPA가 자동으로 JpaRepository 인터페이스를 상속받은 인터페이스를 인식해 컴포넌트 스캔 대상에 추가해준다.
'◼ JPA' 카테고리의 다른 글
[Spring Data JPA] 쿼리 생성 기능과 반환 타입 (0) | 2023.06.20 |
---|---|
[JPA] 컬렉션 조회 시 주의할 점 (hibernate.default_batch_fetch_size) (0) | 2023.06.20 |
[JPA] @Modifying이란? 그리고 주의할점 (벌크 연산) (0) | 2023.06.12 |
[JPA] JPQL의 fetch join(패치 조인)이란? (2) | 2023.06.12 |
[JPA] 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading) (0) | 2023.06.12 |