이 포스트는 김영한님의 ‘스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술’을 수강하고 작성하였습니다.

DataJPAMemberRepository 인터페이스 생성

package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface DataJPAMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
    Optional<Member> findByName(String name);
}

스프링 설정 파일 SpringConfig에서 리포지토리 설정 변경

package hello.hellospring;

// import 생략

@Configuration
public class SpringConfig {

    private final MemberRepository memberRepository;

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

    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository);
    }
}

리포지토리 설정 부분을 삭제했는데, 스프링 데이터 JPA가 DataJPAMemberRepository를 자동으로 스프링 빈에 등록해준다.

여담

스프링 데이터 JPA에서 어떤 기능들을 제공하는지 찾아봤는데, find(), findAll(), findById(), save(), count() 등 내가 ORM을 쓰면서 봤던 함수들이 여럿 보였다. 심지어 하는 일과 원리 또한 ORM이라고 생각했다.
아니나 다를까, ORM을 지원하는 자바 API가 JPA였다.

JPA와 ORM에 대한 설명은 여기에서 잘 정리되어 있어서 링크를 연결해두겠다.

댓글남기기