- 스프링부트랑 jpa만 사용해도 개발 생산성이 많이 증가함
- 스프링 데이터 jpa를 사용하면 리포지토리에 구현 클래스 없이 인터페이스만으로 개발 완료 가능
- CRUD 기능도 스프링 데이터 JPA가 모두 제공함
- JPA를 먼저 학습하고 SPRING DATA JPA를 공부해야함
- SPRING DATA JPA는 JPA를 편리하게 쓰게 해주는 것이기 때문
설정
SpringDataJpaMemberRepository
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface SprintDataJpaMemberRepository extends JpaRepository<Member,Long>, MemberRepository{
@Override
Optional<Member> findByName(String name);
}
- JpaRepository를 상속함 (인터페이스-인터페이스끼리는
extends
사용)
JpaRepository<Member,Long>
: 엔티티 타입이랑 id 타입값
- JpaRepository를 구현하면 Spring Data Jpa가 구현체를 자동으로 만들어줌
SpringConfig
package hello.hellospring;
import hello.hellospring.repository.*;
import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManager;
import javax.sql.DataSource;
@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
으로 MemberRepository 등록한 게 없는데 그걸 주입해주고 있음
- 위에서 만든 SpringDataJpaMemberRepository 인터페이스가 JpaRepository를 구현하면 ..
- Spring Data JPA가 이 인터페이스에 대한 구현체를 알아서 만들어냄!!
- 기본적인 CRUD, 조회 모두 제공
- findByName() , findByEmail() 처럼 메서드 이름 만으로 조회 기능 제공