오늘이라도

[VI. 스프링 DB 접근 기술] 23. 스프링 데이터 JPA 본문

인프런/스프링 입문 (김영한)

[VI. 스프링 DB 접근 기술] 23. 스프링 데이터 JPA

upcake_ 2022. 1. 13. 14:44
반응형

https://github.com/upcake/hello-spring

강의 링크

 

* 오늘의 단축키 & 기능


1. 스프링 데이터 JPA

- SpringDataJpaMemberRepository.java

//인터페이스 - 인터페이스의 경우에는 extend 사용하여 상속
//인터페이스는 다중 상속이 된다.
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {

    //findBy~~~ ~~~에 따라서 쿼리를 짜준다
    //select m from Member m where m.name = ?
    @Override
    Optional<Member> findByName(String name);

    //외에도 findByNameAnd~~~
    //인터페이스 이름만으로도 개발이 가능하다
}

 

- SpringConfig.java

@Configuration //설정 파일
public class SpringConfig {
//    private DataSource dataSource;  //Jdbc용
//    private EntityManager em;       //JPA용
//
//    public SpringConfig(DataSource dataSource, EntityManager em) {
//        this.dataSource = dataSource;
//        this.em = em;
//    }

    private final MemberRepository memberRepository;

    @Autowired
    public SpringConfig(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

    @Bean //스프링 빈을 내가 등록할 거야
    public MemberService memberService() {
//        return new MemberService(memberRepository());

        //인터페이스를 넣으면 자동으로 스프링이 구현체를 만들어서 Bean으로 등록한다.
        return new MemberService(memberRepository);
    }

//    @Bean
//    public MemberRepository memberRepository() {
        //interface는 new가 안되므로 구현체를 return 해준다.
//        return new MemoryMemberRepository();
//        return new JdbcMemberRepository(dataSource);
//        return new JdbcTemplateMemberRepository(dataSource);
//        return new JpaMemberRepository(em);
//    }
}

 

- 테스트 결과

 

- 스프링 데이터 JPA가 `SpringDataJpaMemberRepository`를 스프링 빈으로 자동 등록해준다.

 

2. 스프링 데이터 JPA 제공 기능

- 인터페이스를 통한 기본적인 CRUD

- `findByName()`, `findByEmail()`처럼 메서드 이름 만으로 조회 기능 제공

- 페이징 기능 자동 제공

반응형