1. 리포지토리 인터페이스 선언
// 1. Repository 또는 하위 interface 중 하나를 확장하는 interface 선언, 처리해야하는 <도메인 클래스 명, ID유형(타입)>
interface PersonRepository extends Repository<Person, Long> {
List<Person> findByLastname(String lastname); // 2. interface에서 쿼리 메서드 선언
}
2. 인터페이스 접근 인스턴스를 생성하기 위한 Spring 설정: JavaConfig 또는 XML 구성
// Java 구성: 아래와 유사한 클래스 만들기
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@EnableJpaRepositories // 어노테이션을 달아서 패키지를 스캔하기 위한 설정, 내가 사용하는 저장소에 맞추어야 함 @Enable${store}Repositories
class Config { … }
// XML을 통해 Spring data 저장소 활성화
<?xml version="1.0" encoding="UTF-8"?>
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa
https://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<jpa:repositories base-package="com.acme.repositories"/> // Repository(또는 Repository를 상속받은 하위 인터페이스)가 repositories 패키지를 스캔하도록 설정
</beans>
3. Repository 인스턴스를 주입하여 사용
class SomeClient {
private final PersonRepository repository; // repository 인스턴스를 주입하여 사용
SomeClient(PersonRepository repository) {
this.repository = repository;
}
void doSomething() {
List<Person> persons = repository.findByLastname("Matthews"); // 쿼리 사용
}
}
레퍼런스
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods
'Spring > JPA' 카테고리의 다른 글
Spring JPA - 쿼리 조회 전략 (0) | 2022.10.14 |
---|---|
Spring JPA - 쿼리 메서드 정의 (0) | 2022.10.14 |
Spring JPA - 다양한 스프링 데이터 모듈과 함께 리포지토리 사용하기 (0) | 2022.10.13 |
Spring JPA - 리포지토리 정의 (0) | 2022.10.13 |
Spring JPA - Spring data 저장소로 작업하기, 핵심 개념 (1) | 2022.10.13 |