📹 참고 : 인프런 [ 스프링 입문 - 김영한 ]
스프링 데이터 JPA(Spring Data JPA)는 스프링 프레임워크에서 JPA를 더 쉽게 사용할 수 있도록 지원하는 프로젝트입. JPA를 기반으로 데이터 액세스 계층을 구현할 때 반복적이고 지루한 작업을 줄여주는 간편한 방법을 제공.
주요 특징과 기능
리포지토리 인터페이스: 스프링 데이터 JPA는 개발자가 데이터 액세스 계층을 정의하는 인터페이스인리포지토리(repository)를 제공. 이를 통해 데이터베이스에 접근하는 메서드를 선언하고, 스프링 데이터 JPA가 이를 구현하여 런타임에 자동으로Bean을 생성.쿼리 메서드 자동 생성: 리포지토리 인터페이스에서 메서드의 이름 규칙을 따르면 해당 메서드의JPQL 쿼리가 자동으로 생성됨. 이를 통해 개발자는 별도의 JPQL 쿼리를 작성하지 않고도 데이터베이스에 접근.JPA 기반 메서드: 스프링 데이터 JPA는 JPA에서 지원하는 다양한 기능을 활용할 수 있는 메서드들을 제공. ex) 엔티티의 저장, 조회, 수정, 삭제 등페이징 및 정렬: 데이터를 페이징하거나 정렬하는 기능을 지원하여 대용량 데이터를 처리할 때 유용.쿼리 메서드와 스펙(Specification): 쿼리 메서드를 통해 간단한 쿼리를 자동으로 생성할 수 있으며, 스펙을 사용하여 복잡한 동적 쿼리를 작성할 수 있음.
스프링 데이터 JPA를 사용하면 개발자는 데이터 액세스 계층을 빠르게 개발할 수 있으며, 일반적인 CRUD 작업을 자동화하여 코드의 중복을 줄일 수 있다. 또한, 스프링과의 통합을 통해 다양한 스프링 기능과 호환성을 제공한다.
🌟앞선 JPA 설정 그대로 사용
스프링 데이터 JPA 회원 리포지토리 (인터페이스)
java/hello/hellospring/repository/SpringDataJpaMemberRepository.java
public interface SpringDataJpaMemberRepository extends JpaRepository<Member,
Long>, MemberRepository {
//자동으로 Name을 인식하여 JPQL select m from Member m where m.name=? 으로 실행
Optional<Member> findByName(String name);
}
스프링 데이터 JPA 회원 리포지토리를 사용하도록 스프링 설정 변경
@Configuration
public class SpringConfig {
private final MemberRepository memberRepository;
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService() {
return new MemberService(memberRepository);
}
}
SpringDataJpaMemberRepository 를 스프링 빈으로 자동 등록해준다.
JpaRepository<Member, Long>:JpaRepository를 상속받음으로써 Member 엔티티와 해당 엔티티의 기본 키(Long 타입)를 받아CRUD 작업을 수행할 수 있는 메서드를 상속받음.MemberRepository: MemberRepository 인터페이스를 상속받음으로써 Member 엔티티와 관련된 사용자 정의 메서드를 사용.

스프링 데이터 JPA 제공 기능
findByName() , findByEmail() 처럼 메서드 이름 만으로 조회 기능 제공