6. 스프링 데이터 JPA
스프링 데이터 JPA는 JPA를 편리하게 사용하도록 도와주는 기술이다.
스프링 부트와 JPA만 사용해도 개발 생산성이 많이 증가하고, 개발해야할 코드도 확연히 줄어든다.
여기에 스프링 데이터 JPA를 사용하면, 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있습니다.
그리고 반복 개발해온 기본 CRUD 기능도 스프링 데이터 JPA가 모두 제공합니다. 따라서 개발자는 핵심 비즈니스 로직을 개발하는데, 집중할 수 있습니다.
앞의 JPA 설정을 그대로 사용한다.
<스프링 데이터 JPA 회원 리포지토리> repository/SpringDataJpaMemberRepository 인터페이스 생성
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 {
Optional<Member> findByName(String name);
}
<스프링 데이터 JPA 회원 리포지토리를 사용하도록 스프링 설정 변경> SpringConfig
package hello.hellospring;
import hello.hellospring.repository.*;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@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 를 스프링 빈으로 자동 등록해준다.
스프링 데이터 JPA 제공 기능
- 인터페이스를 통한 기본적인 CRUD
- findByName() , findByEmail() 처럼 메서드 이름 만으로 조회 기능 제공
- 페이징 기능 자동 제공
+) 실무에서는 JPA와 스프링 데이터 JPA를 기본으로 사용하고, 복잡한 동적 쿼리는 Querydsl이라는 라이브러리를 사용하면 된다. Querydsl을 사용하면 쿼리도 자바 코드로 안전하게 작성할 수 있고, 동적 쿼리도 편리하게 작성할 수 있다. 이 조합으로 해결하기 어려운 쿼리는 JPA가 제공하는 네이티브 쿼리를 사용하거나, 앞서 학습한 스프링 JdbcTemplate를 사용하면 된다.
인프런 강의) 김영한의 스프링 입문 <코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술>
'Java > spring' 카테고리의 다른 글
[스프링 기본] ch01 객체 지향 설계와 스프링-스프링이란? (0) | 2022.05.25 |
---|---|
[스프링 입문] ch07 AOP (0) | 2022.05.23 |
[스프링 입문] ch06 스프링 DB 접근 기술-JPA (0) | 2022.05.19 |
[스프링 입문] ch06 스프링 DB 접근 기술-스프링 JdbcTemplate (0) | 2022.05.19 |
[스프링 입문] ch06 스프링 DB 접근 기술-스프링 통합 테스트 (0) | 2022.05.19 |
댓글