인프런 커뮤니티 질문&답변

김정희님의 프로필 이미지
김정희

작성한 질문수

스프링 데이터 JPA

스프링 데이터 Common 8. 기본 리포지토리 커스터마이징

<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문

작성

·

301

0

  1. JpaRepository를 상속 받는 인터페이스 정의

    • @NoRepositoryBean

  2. 기본 구현체를 상속 받는 커스텀 구현체 만들기

  3. @EnableJpaRepositories에 설정

    • repositoryBaseClass

기본 리포지토리를 커스터마이징할 때 위와 같은 방법으로 하라고 알려주셨는데요, 인터페이스에서 JpaRepository를 상속받았는데 구현체에서 SimpleJpaRepository<T, ID>를 상속받는 이유를 모르겠습니다.

구현체가 (JpaRepository를 상속받은)인터페이스를 구현하니까 JpaRepository 기능을 사용할 수 있지 않나? 라고 생각했습니다.
아마 제가 상속과 구현 개념이 제대로 잡혀있지 않아서 그런 것 같습니다.

설명해 주시면 저에게 많은 도움이 될 것 같습니다. 좋은 강의 만들어주셔서 감사합니다!

답변 1

0

백기선님의 프로필 이미지
백기선
지식공유자

안녕하세요. 혹시 SimpleJpaRepository<T, ID>를 상속받지 않고 JpaRepository 인터페이스만 구현해도 잘 동작하던가요?

CustomRepository implement JpaRepository

이렇게 정의했을 이제 CustomRepository를 구현하는 클래스는 JpaRepository가 제공하는 모든 기능도 제공하면서, 제가 추가로 CustomRepository에 정의한 기능도 구현해야 하는거자나요? 그쵸?

그런데 저는 JpaRepository가 제공하는 기능을 직접 구현할 필요가 없죠. 왜냐면 스프링 데이터 JPA에서 구현해둔 SimpleJpaRepository가 있으니까요. 이걸 상속해주면 저는 이제 CustomRepository에 정의한 기능만 구현하면 되는 거죠.

직접 해보시고 SimpleJpaRepository를 구현하지 않아도 잘 동작하는지 알려주세요. :)

김정희님의 프로필 이미지
김정희

작성한 질문수

질문하기