2018. 8. 1. 15:18ㆍ카테고리 없음
스프링 데이터 JPA는 스프링프레임워크에서 JPA의 사용을 보다 쉽게 할 수 있도록 도와주는 프로젝트입니다. 스프링 데이터 JPA는 리포지토리 개발시 인터페이스를 상속 하는 것 만으로도 구현 클래스 없이도 데이터 접근을 가능하게 합니다. 보통 CRUD 메소드는 JpaRepository 인터페이스가 공통적으로 제공하는데 findByUserid()와 같은 메소드와 같이 인터페이스에 정의되어 있지 않은 메소드가 있다고 해 보겠습니다.
UserRepository.findByUserid()
놀랍게도, 스프링 데이터 JPA는 위 메소드 이름을 분석해 적절한 JPQL 쿼리 문장으로 만들어 줍니다.
select m from User u where userid =: userid
이어서 스프링 데이터 설정을 진행하겠습니다.
스프링 데이터 설정
pom.xml 파일에 스프링 데이터의 의존을 추가해 줍니다.
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.8.0.RELEASE</version>
</dependency>
추가가 완료되면 환경 설정을 추가해 줍니다. 그리고 root-context.xml파일에 jpa 리포지토리를 검색을 할 수 있게 관련 설정을 추가해줍니다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans" >
<jpa:repositories base-package="jpabook.jpashop.repository" />
</beans>
설정을 추가해 줄 때 jpa 네임스페이스를 추가돼어 있어야 합니다. STS를 사용하고 있다면 네임스페이스 탭에서 jpa 네임스페이스를 추가하도록 합니다.
스프링 데이터 적용
스프링 프레임워크에서 계층을 나눌 때 다음과 같이 계층을 나눕니다.
컨트롤러 : 서비스 계층의 처리 결과를 View에 전달
서비스 : 비즈니스 로직이나 데이터 접근을 담당하는 레파지토리 호출
레파지토리 : 데이터 접근을 담당
컨트롤러, 서비스, 레파지토리는 공통적으로 도메인 모델을 이용합니다. 도메인은 모델은 다음과 같이 엔티티 애노테이션으로 연결된 클래스를 말합니다.
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
public class Member {
name = "MEMBER_ID")
( private Long id;
private String name;
private Address address;
mappedBy = "member")
( private List<Order> orders = new ArrayList<Order>();
... get, set 메소드
}
스프링데이터는 레파지토리 계층에 관여합니다. 스프링 데이터를 사용하려면 다음과 같이 인터페이스를 정의해주고 JpaRepository<Member, Long> 인터페이스를 상속 받습니다. 이때 현재 레파지토리와 연결된 엔티티 클래스 이름을 인자로 전달해 줍니다.
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByName(String name);
}
공통 인터페이스는 Spring DATA JPA 공식 문서를 참고하면 도움이 됩니다.
출처: http://happygrammer.tistory.com/151?category=891896 [해피그래머의 개발 노트]