[Spring] 스프링 데이터 JPA

이준영·2022년 9월 30일
0

스프링-입문

목록 보기
14/15

스프링 데이터 JPA에 대해 알아보자

순수 JDBC ➡️ JDBC Template ➡️ JPA를 거쳐 JPA를 더 간편/간단하게 해주는게 스프링 데이터 JPA다.
(언제까지 간단해질거니..)

스프링 데이터 JPA는 필수!! 라고 할 수 있는데
스프링 데이터 JPA는 편의성을 도와주는거지 개념을 알려주는게 아니다.
JPA를 먼저 알고 공부해야한다. 무조건. 필수임. 기본도 모르면서 알려고 하지 말자!

스프링 데이터 JPA는 반복&귀찮음을 말도 안되게 엄청나게 줄여준다.

모든 DB관련 기술이 마찬가지로 다음과 같은 진행과정을 거친다.

  • 라이브러리 추가
  • JPA 설정 추가
  • 스프링 데이터 JPA 리포지토리
  • 스프링 설정 변경

1,2 라이브러추가, JPA설정 추가는 앞 포스팅 참고

3. 스프링 데이터 JPA 리포지토리

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 {
    	
        // JPQL select m form Member m wher m.name = ? 이런식으로 짜준다
        // 규칙이 있음
        // findBy , And, Or 등등
        Optional<Member> findByName(String name);
        
    }
    

끝..?

끝..!!

나중에 보면 아무것도 없는데 뭐가 끝이야 라고 생각할까봐 전체 코드를 넣었다.

인터페이스를 만들어 놓고 JpaRepository를 extends로 받아오면 스프링 데이터 JPA가 구현체(SpringDataJpaMemberRepository)를 알아서 만들어서 스프링 빈에 등록한다.

우리는 이걸 가져다 쓰기만 하면 된다.

  • 스프링 데이터 JPA가 기본적으로 제공하는 것

스프링 데이터 JPA가 공통적인 메서드는 기본적으로 제공할 수 있지만 제공해 줄 수 없는게 있다.
프로젝트마다 로직이 다르고 변수명이 다르기 때문에 세부적인 것들은 제공해 줄 수 없다.
예를 들어 프로젝트에서 이름으로 회원을 검색할 건데 내 프로젝트의 회원 변수명은 name이고 쟤 프로젝트의 회원 변수명은 username이라면? ➡️ 공통되지 않는다.
이런 것들의 위 코드의 Optional<Member> findByName(String name)같이 정해진 규칙에 따라 메서드를 작성하면 또 알아서 만들어준다.

스프링 데이터 JPA 제공 기능

  • 인터페이스를 통한 기본적인 CRUD
  • findByName(), findByEmail()처럼 메서드 이름만으로 조회 기능 제공
  • 페이징 기능 자동 제공

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

 @Configuration
public class SpringConfig {
    
	private final MemberRepository memberRepository;
    
    public SpringConfig(MemberRepository memberRepository) {
   		this.memberRepository = memberRepository;
        
    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository);
    }
    
}
profile
화이팅!

0개의 댓글