public interface SpringDataMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
//JPQL select m from Member m where m.name = ? //저 함수 이름만 보고도 이렇게 짜줌. 매개변수, 반환타입, 이름만 보고 알아서 짜주는 듯
@Override
Optional<Member> findByName(String name);
}
스프링 JPA는 저렇게 인터페이스로 만들어 놓고, JpaRepository <클래스, id타입>, 먼저만들어놓은MemberRepository{
findByName()
}
인터페이스가 인터페이스 상속받을때는 extends
이렇게 JpaRepository를 상속받으면 알아서 구현해줌. JpaRepository는 Jpa라이브러리 거임.
import org.springframework.data.jpa.repository.JpaRepository;
findByName은 id같은 경우는 어떤 db든 있으니 안에 finyById라는 이름으로 구현되어 있음.
근데 Name, Email 이런 건 다를 수 있으니 저렇게 직접 쳐 줘야 함.
근데 위 처럼만 해두면, 알아서 이름, 매개변수, 반환타입 참고해서 구현해 줌.
궁금하면 JpaRepository 들어가서 직접 상속받은 것들 안에 들어가 보면 앎.
@Configuration
public class SpringConfig {
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService(){
return new MemberService(memberRepository);
}
// @Bean
// public MemberRepository memberRepository(){
// return new JpaMemberRepository(em);
// }
}
JpaRepository 상속 받으면 Bean 등록도 알아서 해줌.
그냥 memberRepository @Autowired로 받아주기만 하면 됨.
public interface JpaRepository<T, ID> extends ListCrudRepository<T, ID>, ListPagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
'스프링 > 0. 입문, 전체방향' 카테고리의 다른 글
21강. AOP (0) | 2023.07.12 |
---|---|
19강. JPA (0) | 2023.07.10 |
18강. Jdbc 템플릿 (0) | 2023.07.09 |
17강. spring 종합 테스트 (0) | 2023.07.09 |
16강. 순수 JDBC (0) | 2023.07.09 |