스프링/0. 입문, 전체방향

20강. 스프링 JPA

sdafdq 2023. 7. 12. 07:08
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