ACHO.pk devlog

[Springboot] 스프링데이터 JPA 본문

프레임워크/Springboot

[Springboot] 스프링데이터 JPA

Acho 2023. 1. 26. 21:03

인프런 김영한 강사님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"의 강의를 듣고 학습하였습니다.


스프링 데이터 JPA: JPA를 편리하게 사용하도록 도와주는 기술

 

스프링 데이터 jpa는 단순 반복을줄이고 기본 CRUD기능도 제공한다.

crud => 데이터 생성(Create), 검색(Read), 갱신(Update), 삭제(Delete)


스프링 데이터 JPA 회원 포지토리

src/repository/SpringDataJpaMemberRepository

package Springboot.study.repository;

import Springboot.study.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

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

인터페이스가 인터페이스를 받을 때는 extends를 사용해야한다. 인터페이스는 다중상속이 가능하다.

JpaRepository 와 MemberRepository 인터페이스를 가져온다.

findByName()만 적어주면 따로 더 구현할 것이 없다. (save(), findById(), findAll()은 이미 만들어져있다.)


스프링 데이터 JPA 회원 리포지토리를 사용하도록 스프링 설정 변경

springConfig 파일 수정

package Springboot.study;

import Springboot.study.repository.JdbcTemplateMemberRepository;
import Springboot.study.repository.JpaMemberRepository;
import Springboot.study.repository.MemberRepository;
import Springboot.study.repository.MemoryMemberRepository;
import Springboot.study.service.MemberService;
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;
    public SpringConfig(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }
    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository);
    }
}

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

memberRepository를 인잭션 받아서 등록해준다. 

 


스프링 데이터 JPA 제공 기능

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

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

페이징 기능 자동 제공

 

 

 

Comments