정의
스프링 데이터 JPA란? 스프링 프레임워크의 일부로, 데이터베이스와 상호작용을 간편하게 만들어주는 도구이다.
핵심 기능
- 기본적인 데이터 베이스 작업 자동화
- 데이터를 저장, 조회, 수정, 삭제하는 작업을 자동으로 처리해주는 여러 메서드를 제공한다.
- 예) save(), findAll()
- 인터페이스 기반 개발
- 단순히 인터페이스를 정의하는 것만으로도, 스프링 데이터 JPA가 필요한 메서드를 자동으로 구현해준다
- 쿼리 메서드 지원
- 메서드 이름만 잘 지으면, SQL을 직접 작성하지 않아도 데이터 베이스에서 원하는 데이터를 쉽게 조회할 수 있다.
- 예를 들면 findByName(String name)이라는 메서드를 작성하면, 자동으로 데이터 조회하는 SQL이 생성된다.
1. 스프링 데이터 JPA 회원 Repository 만들기
파일 경로: src/main/java/만든 파일명/repository/SpringDataJpaMemberRepository
package section4.section4_spring.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import section4.section4_spring.domain.Member;
import java.util.Optional;
public interface SpringDataJpaMemberRepository extends JpaRepository<Member,
Long>, MemberRepository {
Optional<Member> findByName(String name);
}
이 파일은 데이터 베이스에서 회원 정보를 다루는 repository를 정의한다. 이 repository는 회원 정보를 저장하고, 검색하는 기능을 자동으로 제공한다.
- JpaRepository<Member, Long>
- JpaRepository
- 스프링 데이터 JPA가 제공하는 기본 리포지토리 인터페이스이다.
- 이 인터페이스는 기본적인 저장, 조회, 수정, 삭제 작업을 해주는 메소드를 기본적으로 제공한다.
- <Member, Long>
- 데이터 베이스에 저장할 엔티티가 Member이고, 엔티티의 식별자가 Long 타입임을 나타낸다.
- findByName(String name);
- 해당 메소드는 JpaRepository 인터페이스가 자동으로 생성해주지 않는 기능이기에 직접 정의해준 것이다.
- 스프링 데이터 JPA는 쿼리 메서드를 지원하기 때문에 자동으로 SQL 쿼리를 생성해서 데이터 베이스에서 이름으로 회원을 검색한다.
- JpaRepository
2. 스프링 데이터 JPA 회원 리포지토리를 사용하도록 스프링 설정변경하기
파일: SpringConfig
//[JPA]
private EntityManager em;
@Autowired
public SpringConfig(EntityManager em) {
this.em = em;
}
@Bean //빈을 등록할거야!
public MemberService memberService() {
return new MemberService(memberRepository()); //->JPA
}
@Bean //빈을 등록할거야!
public MemberRepository memberRepository() {
return new JpaMemberRepository(em);
}
//[스프링 데이터 JPA]
@Configuration
public class SpringConfig {
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService() {
return new MemberService(memberRepository);
}
}
스프링 데이터JPA를 사용하면서 코드가 단순하게 변경되었다. 기존에는 Repository 메서드에서 em을 사용해 JpaMemberRepository를 만들어내고, 또 이렇게 만들어낸 리포지토리가 MemberService에 주입되었다.
하지만 스프링 데이터JPA를 사용하면 MemberRepository를 직접 SpringConfig 클래스의 생성자에서 주입받아 memberRepository변수에 저장하고 이 변수를 사용해서 MemberService()메서드에 주입해 MembetService가 만들어진다.
이렇게 바뀐 이유는 아래와 같다.
- 스프링 데이터 JPA의 자동 빈 등록 기능활용
- JpaMemberRepository가 스프링에 의해 자동으로 생성되고 관리된다.
- 의존성 주입의 단순화
- 스프링 데이터 JPA는 MemberRepository 인터페이스를 보고 자동으로 JpaMemberRepository를 만들어서 빈으로 등록해주고, 그걸 SpringConfig에 주입해준다.
'Server > Spring' 카테고리의 다른 글
연결된 테이블 2개의 Entity(Foreign Key) (2) | 2024.09.05 |
---|---|
회원 관리 - 전체 구조 (0) | 2024.08.27 |
JPA를 통해서 DB와 연결하기 (0) | 2024.08.26 |
H2 데이터 베이스 설치 및 테이블 생성 (0) | 2024.08.26 |
회원 관리 - 프론트) 3. 모든 회원 조회하기 (0) | 2024.08.25 |