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

허진호님의 프로필 이미지
허진호

작성한 질문수

실전! 스프링 데이터 JPA

사용자 정의 리포지토리 구현

인터페이스 상속 관련 질문

작성

·

261

15

안녕하세요 커스텀 리포지토리 네이밍 관련 궁금한점이 있습니다.

커스텀 리포지토리를 실수로 MemberRepositoryCustomImpl로 네이밍했는데 MemberRepositoryCustom을 Impl한 클래스로 인식이 됐는지 MemberRepositoyTest에서도 정상적으로 동작했습니다.

네이밍을 MemberRepositoryCustomImpl로 한 것과 MemberRepositoryImpl로 한것과 기능상 차이가 있을까요?

답변 1

22

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 허진호님 좋은 질문입니다.

스프링 데이터 1.9.x 버전까지는 MemberRepositoryImpl처럼 작성해야만 했습니다.

최근에는 진호님이 질문하신 것 처럼 Custom 인터페이스명 + Impl을 붙이는 방식도 지원하고, 이 방식을 더 권장합니다.

기능상의 차이는 없고, 대신에 Custom 인터페이스명 + Impl을 사용하면 인터페이스와 구현체를 1개 이상 만들어서 분리할 수 있습니다.

(자세한 예시는 다음 참고: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations)

저는 과거에 쓰던 방식에 익숙해서 특별히 고민없이 사용했는데, 진호님의 질문을 받고 생각해보니, Custom 인터페이스명 + Impl 방식으로 넘어가는게, 더 명시적이고, 확장성도 좋아서 더 나은 선택이라 생각합니다.

고맙습니다^^

허진호님의 프로필 이미지
허진호

작성한 질문수

질문하기