스프링 데이터 JPA

OneTwoThree·2023년 6월 21일
0
  • 스프링부트랑 jpa만 사용해도 개발 생산성이 많이 증가함
  • 스프링 데이터 jpa를 사용하면 리포지토리에 구현 클래스 없이 인터페이스만으로 개발 완료 가능
  • CRUD 기능도 스프링 데이터 JPA가 모두 제공함
  • JPA를 먼저 학습하고 SPRING DATA JPA를 공부해야함
  • SPRING DATA JPA는 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() 처럼 메서드 이름 만으로 조회 기능 제공

0개의 댓글