본문 바로가기
Spring Tutorial

[Spring 입문 14] 스프링 DB 접근 기술: 스프링 데이터 JPA

by 미소5 2024. 8. 4.

[Spring 입문 13] 스프링 DB 접근 기술: JPA (tistory.com)

 

[Spring 입문 13] 스프링 DB 접근 기술: JPA

[Spring 입문 12] 스프링 DB 접근 기술: 스프링 JdbcTemplate (tistory.com) [Spring 입문 12] 스프링 DB 접근 기술: 스프링 JdbcTemplate[Spring 입문 10] 스프링 DB 접근 기술: 순수 JDBC (tistory.com) [Spring 입문 10] 스프링

joly156.tistory.com

 스프링 데이터 JPA는 JPA를 편리하게 사용하도록 도와주는 기술. → 꼭 JPA를 학습한 후에 스프링 데이터 JPA를 학습해야 한다.

 


실무에서 관계형 데이터베이스를 사용한다면, 스프링 데이터 JPA는 필수!

  • 스프링 부트와 JPA만 사용해도 개발 생산성이 정말 많이 증가하고, 개발해야할 코드도 확연히 줄어드는데, 여기에 스프링 데이터 JPA를 사용하면, 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있다!  반복 개발해온 기본 CRUD 기능스프링 데이터 JPA가 모두 제공한다.
  • 스프링 부트와 JPA라는 기반 위에, 스프링 데이터 JPA라는 환상적인 프레임워크를 더하면? 반복 개발해온 코드들이 확연히 줄어들고, 개발자는 핵심 비즈니스 로직을 개발하는데에 집중할 수 있다.

  • 스프링 데이터 JPA 회원 리포지토리
    • JpaRepository인터페이스와 MemberRepository인터페이스 를 다중상속받는다.

JpaRepository인터페이스를 상속받으면,  스프링 데이터 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 {
    //JpaRepository<Member, Member의 PK타입>

    @Override
    Optional<Member> findByName(String name);
}
  •  findByName메소드가 다음 JPQL을 자동으로 생성해준다.  →메서드 이름만으로 개발 끝!
    • select m from Member m where m.name=?

 


  • 스프링 데이터 JPA 제공 클래스

스프링 데이터 JPA 제공 클래스

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

  • 스프링 데이터 JPA 회원 리포지토리를 사용하도록 스프링 설정 변경
    • 스프링 데이터 JPA가 SpringDataJpaMemberRepository를 스프링 빈으로 자동 등록
@Configuration
public class SpringConfig {

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

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

}

 

테스트 성공

 


  • 실무에서는 JPA와 스프링 데이터 JPA를 기본으로 사용하고, 복잡한 동적 쿼리는 Querydsl이라는 라이브러리를 사용하면 된다. Querydsl을 사용하면 쿼리도 자바 코드로 안전하게 작성할 수 있고, 동적 쿼리도 편리하게 작성할 수 있다.
    • 이 조합으로 해결하기 어려운 쿼리는 JPA가 제공하는 네이티브 쿼리를 사용하거나, 앞서 학습한 스프링 JdbcTemplate를 사용

[Spring 입문12] 스프링 JdbcTemplate (tistory.com)

 

[Spring 입문12] 스프링 JdbcTemplate

스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해준다. 코드가 굉장히 간결해졌음을 알수있다. 하지만 SQL은 직접 작성해야 한다. 스프링 JdbcTemplate 회원 리

joly156.tistory.com

 

[Spring 입문 13] 스프링 DB 접근 기술: JPA (tistory.com)

 

[Spring 입문 13] 스프링 DB 접근 기술: JPA

[Spring 입문 12] 스프링 DB 접근 기술: 스프링 JdbcTemplate (tistory.com) [Spring 입문 12] 스프링 DB 접근 기술: 스프링 JdbcTemplate[Spring 입문 10] 스프링 DB 접근 기술: 순수 JDBC (tistory.com) [Spring 입문 10] 스프링

joly156.tistory.com

 

728x90
반응형