작성
·
539
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
개인 프로젝트를 만들어보면서 spring을 이해해보려고 강의를 처음부터 다시 보고있는중에 현재 강의에서 질문이 생겼습니다.
구현체를 쓰지 않기 위해 이때까지 인터페이스를 기반으로 구현하고 구현체를 인터페이스에 주입하는 방식으로 사용했는데
spring data jpa의 경우 구현체가 없기때문에 인터페이스를 인터페이스로 상속하는 방식이 되고 있어서 현재 강의에선 JpaRepository가 제공해주지 않는 finByName만 오버라이드해서 사용하고 있습니다.
근데 만약 구조가 찾기, 삽입 등의 기본기능만 필요한 상태라면
public interface TestRepository {
}
public interface TestJpaRepository extends JpaRepository<Test,Integer>,TestRepository {
}
이렇게 아무것도 없는 인터페이스를 상속받는 인터페이스가 되는 상황이 만들어 질거같은데 후에 무슨 로직이 추가될지 모르니 이런 방식으로 사용하는게 옳을까요?
답변 1
0
스프링데이터JPA의 JpaRepository 인터페이스도 사실 구현체가 존재합니다. 관련하여 아래 링크를 참고해주세요.
https://www.inflearn.com/questions/674190
그렇기 때문에
아무것도 없는 인터페이스를 상속받는 인터페이스가 되는 상황이 만들어 질거같은데
이 내용은 정정이 필요하며,
후에 무슨 로직이 추가될지 모르니 이런 방식으로 사용하는게 옳을까요?
SpringDataJPA의 인터페이스를 사용하다 추가 로직이 필요할 경우에 코드를 추가하면 됩니다.
.
감사합니다.
앗 제 말은 원글에서 TestRepository가 아무기능이 없다는 뜻이었습니다.
그니까 강의 기준으로 findByname을 이용하기위해 SpringDataJpaMemberRepository가 memberRepository를 상속받는데 만약 memberRepository가 findByname을 사용하지 않는 경우였다면 JpaRepository로 충분해서 SpringDataJpaMemberRepository가 memberRepository를 상속받는게 의미없는 행위가 되는데도 나중에 무슨 로직이 추가될지 모르니 다형성을 위해 memberRepository를 상속받는게 맞는건지 하는 질문이였습니다