작성
·
248
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
@Override
Optional<Member> findByName(String name);
}
이 스프링jpa 에서 저기 findByName 부분은 없어도 되는 걸까요? 이미 MemberRepository 인터페이스를 상속 받으니까?
만약에 MemberRepository 에서 메만약에 MemberRepository 에서 메소드명을 schByName 이라 SpringDataJpaMemberRepository 에서소드명을 schByName 이라고 짓는다면 어떡해야 SpringDataJpaMemberRepository 에서 어떡해야하나요?..
스프링jpa를 염두해두고 미리 메소드명들을 만들어야 하나요?
답변 2
0
안녕하세요. BlueJeans님
스프링 데이터 JPA는 이름에 대한 규칙이 있습니다.
따라서 해당 규칙에 맞추어서 사용해야 합니다.
관련해서 자세한 내용은 스프링 데이터 JPA 강의를 참고해주세요 🙂
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. BlueJeans 님의 질문과 관련하여, 이미 MemberRepository
인터페이스 상속에 대해 질문하신 다른 수강생의 질문과 유사한 상황을 찾았습니다. 그리고 이와 관련하여 메서드 중복 선언에 대한 질문 링크가 있어 이를 공유 드립니다.
해당 질문에서는 findByName
메서드가 MemberRepository
에 이미 선언되어 있는 상황에서 SpringDataJpaMemberRepository
에서 다시 선언하는 것에 대한 의문을 제기했습니다. 질문에 대한 답변에서는, SpringDataJpaMemberRepository
에 findByName
메서드를 다시 선언하지 않아도 MemberRepository
에서 선언된 메서드를 그대로 사용할 수 있음이 확인되었습니다. 따라서 답변은 다음과 같습니다:
findByName에 대한 재선언: 상속받은 MemberRepository
인터페이스에 이미 findByName(String name)
메서드가 정의되어 있다면, 이를 SpringDataJpaMemberRepository
에서 다시 선언하지 않아도 됩니다. Spring Data JPA는 상속받은 인터페이스의 메서드를 자동으로 인식합니다.
메서드 명 변경: 만약 MemberRepository
에서 findByName
과 다른 메서드 명을 사용하고 싶다면, 해당 메서드명으로 직접 선언해야 합니다. SpringDataJpaMemberRepository
는 JpaRepository를 확장함으로써, 메서드명 기반의 쿼리 생성 기능(Spring Data JPA의 Query Creation)을 활용할 수 있습니다. 이는 메서드의 이름을 통해 SQL 쿼리를 생성할 수 있게 해줍니다. 따라서, MemberRepository
에 schByName
같은 새로운 메서드를 정의하고 이를 SpringDataJpaMemberRepository
에서 사용하고자 한다면, 해당 메서드를 SpringDataJpaMemberRepository
에서 명시적으로 선언해야 합니다.
이러한 정보는 질문자님이 스프링 데이터 JPA를 사용하실 때 메서드 명명 규칙 및 상속받은 인터페이스의 메서드 사용에 대한 이해를 돕기 위한 것입니다. 스프링 데이터 JPA는 개발자가 보다 효율적인 데이터 접근 계층을 구현할 수 있도록 다양한 기능을 제공합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.