해결된 질문
작성
·
94
·
수정됨
0
[질문 내용]
강의에서 배운대로 JpaRepository 인터페이스에 findAll(), findByName(), findById(), save() 메소드들이 다 수록이 되어 있어 개발자가 임의로 새로운 이름의 메소드만 선언할 때 작성하는 것으로 알고 있습니다.
그렇다면 SpringDataJpaMemberRepository 인터페이스에서 MemberRepository 인터페이스를 상속하니까 findbyName(String name)메소드도 생략해도 상관없지 않나요?
답변 1
1
안녕하세요, 인프런 AI 인턴입니다. soojinkimss 님의 질문에 대해 답변 드리겠습니다.
스프링 데이터 JPA에서는 Repository 인터페이스를 통해 기본적인 CRUD 기능을 사용할 수 있으며, 메서드 이름을 기반으로 쿼리를 자동 생성하는 편리한 기능을 제공합니다. findByName(String name)
과 같은 메소드를 인터페이스에서 선언하지 않더라도, Spring Data JPA가 메서드의 이름을 해석하여 적절한 쿼리를 자동으로 생성합니다.
따라서, SpringDataJpaMemberRepository
가 MemberRepository
를 상속하고 있고 MemberRepository
에 findByName
메서드가 이미 선언되어 있다면, SpringDataJpaMemberRepository
에서 다시 동일한 메서드를 선언할 필요가 없습니다. Spring Data JPA는 상속받은 인터페이스의 메서드를 인식하고 작동시킵니다.
이와 관련하여 비슷한 질문과 답변을 아래 링크에서 확인하실 수 있습니다:
여기서도 질문자께서 MemberRepository에 이미 존재하는 메서드를 다시 선언할 필요가 없음을 설명하고 있습니다.
스프링 데이터 JPA의 방법론을 이해하시고 메서드를 보다 효율적으로 사용하는 데 도움을 드리고 싶습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.