* 인프런 김영한 강사님의 스프링 입문 강의 정리
6. 스프링 데이터 JPA
환경 설정은 앞 포스팅의 JPA 환경설정과 동일하다.
6-1 스프링 데이터 JPA Repository 생성
repository 폴더 하위에 SpringDataJpaMemberRepository 인터페이스를 생성한다.
* 클래스 파일이 아닌 인터페이스!
* 스프링 데이터 jpa를 사용하면 인터페이스만으로 구현이 가능하다..!
[SpringDataJpaMemberRepository]
package myStudyspring.myStudyspring.repository;
import myStudyspring.myStudyspring.domain.member;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface SpringDataJpaMemberRepository extends JpaRepository<member, Long>, memberRepository {
@Override
Optional<member> findByName(String name);
}
jpaRepository<key(entity), pk의 type>를 받아야 한다. (인터페이스-인터페이스 이므로 extends 사용)
예제에서 key는 member이며, pk id의 타입은 long이다.
다중 상속으로 만들어놓았던 memberRepository 인터페이스를 상속받는다.
JpaRepository에서는 기본 메서드들을 제공해주기 때문에 메서드 이름만으로 조회 기능을 실행할 수 있으며,
기본 CRUD와 페이징 처리 등을 자동으로 제공한다.
그러나 비즈니스는 다 다르기 때문에 공통으로 제공하는 인터페이스에 한계가 있다.
따라서 인터페이스에서 findBy--- 과 같은 메서드 네임을 사용하여 조회할 수 있는 기능을 제공한다.
ex) findByName - 이름으로 조회한다.
6-2 스프링 설정 변경
package myStudyspring.myStudyspring;
import myStudyspring.myStudyspring.repository.*;
import myStudyspring.myStudyspring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
private final memberRepository memberRepository;
public SpringConfig(myStudyspring.myStudyspring.repository.memberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService(){
return new MemberService(memberRepository);
}
}
spring data JPA는 jpaRepository를 받고 있으면 자동으로 구현체를 만들어주고 스프링 빈에 등록해주기 때문에
가져다 쓰기만 하면 된다.
*실무에서는 복잡한 동적 쿼리를 Querydsl을 사용하며, 해결하기 어려운 쿼리는 jpq가 제공하는 네이티브 쿼리를 사용하거나 jdbcTemplate을 조합하여 사용하기도 한다.
'컴퓨터 > Spring Boot' 카테고리의 다른 글
[TIL] Spring Boot(intellij) - start2 (스프링 핵심 원리 정리) (0) | 2023.07.05 |
---|---|
[TIL] Spring Boot(intellij) - AOP (0) | 2023.06.14 |
[TIL] Spring Boot(intellij) - [DB-4] JPA와 스프링 데이터 JPA (0) | 2023.06.07 |
[TIL] Spring Boot(intellij) - [DB-3] DB 연결 테스트 (0) | 2023.06.02 |
[TIL] Spring Boot(intellij) - [DB-2] DB 연결과 JDBC (0) | 2023.06.02 |