김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'을 듣고 적은 글입니다.
스프링 부트와 JPA만 사용해도 개발 생산성이 많이 증가하고, 개발 코드도 줄어듭니다. 여기에 스프링 데이터 JPA를 사용하면 리포지토리에 구현 클래스 없이 인터페이스만으로 개발이 가능해집니다. 그리고 반복 개발한 CRUD 기능도 스프링 데이터 JPA가 모두 제공합니다. 스프링 데이터 JPA가 JpaRepository를 받고 있으면 구현체를 자동으로 만들어 스프링빈에 자동으로 등록해주기에 우린 가져다가 쓰면 된다.
먼저 SpringDataJpaMemberRepository.java 인터페이스를 만들어준다.
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
@Override
Optional<Member> findByName(String name);
}
인터페이스 내부를 살펴보면 우리가 앞서 적었던 save(), findAll()과 같은 메서드가 존재하지 않고 findByName() 만 존재함을 볼 수 있다.
package hello.hellospring;
import hello.hellospring.repository.*;
import hello.hellospring.service.MemberService;
import jakarta.persistence.EntityManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import javax.swing.text.html.parser.Entity;
import javax.xml.crypto.Data;
@Configuration
public class SpringConfig {
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService(){
return new MemberService(memberRepository);
}
}
스프링 데이터 JPA가 SpringDataJpaMemberRepository 를 스프링 빈으로 자동 등록해준다.

출처 : 강의 제공 자료
스프링 데이터 JPA에서 제공해주는 것들을 살펴보면 우리가 계속 만들어왔던 save(), findAll() 등을 기본적으로 제공해준다. 그렇기에 우리는 SpringDataJpaMemberRepository.java 인터페이스에서 적지 않았던 것이다.
스프링 데이터 JPA 제공 기능
findByName()처럼 메서드 이름만으로 조회 기능 제공