카테고리 없음

8.2. QUery Methods

juniKang 2023. 1. 18. 09:53

https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#repositories.query-methods

 

Spring Data JDBC - Reference Documentation

Example 10. Repository definitions using domain classes with annotations interface PersonRepository extends Repository { … } @Entity class Person { … } interface UserRepository extends Repository { … } @Document class User { … } PersonRepository re

docs.spring.io

일반적인 CRUD 기능의 리포지토리들은 대게 기본 데이터스토어에 쿼리들을 가지고 있다. 스프링 데이터에서는, 이런 쿼리 선언을 네가지 스텝 과정으로 나눈다.

 

1. Repository 나 Repository의 하위 인터페이스를 상속받은 인터페이스를 선언하고, 다룰 도메인 클래스나 ID 타입을 타입짓는다. 다음과 같이:

interface PersonRepository extends Repository<Person, Long> { ... }

2. 인터페이스에 쿼리 메소드를 선언한다.

interface PersonRepository extends Repository<Person, Long> {
  List<Person> findByLastname(String lastname);
}

3. JavaConfig 나 XML 설정으로 이런 인터페이스들을 프록시 인스턴스로 생성하도록 스프링을 설정한다.

@EnableJpaRepositories
class Config { ... }

 + JavaConfig 변수는 패키지를 명시적으로 설정하지 않는다. 왜냐하면 어노테이션이 붙은 클래스의 패키지가 기본으로 사용되기 때문이다. 패키지를 스캔하도록 커스터마이징 하기 위해, basePackage의 데이타-스토어-특정 리포지토리의 @EnableJpaRepositorues-애노테이션 애트리뷰트를 사용하라.

 

4. 리포지토리 인스턴스를 주입받고 사용한다, 다음과 같이:

class SomeClient {
  private final PersonRepository repository;
  
  SomeClient(PersonRepository repository) {
    this.reopository = repository;
  }
  
  void doSomething() {
    List<Person> persons = repository.findByLastname("Matthews");
  }
}

다음 각각 스텝을 상세히 설명하는 섹션들이 있다 :

  • Repository 인터페이스 정의하기
  • 쿼리 메소드 정의하기
  • 리포지토리 인스턴스 생성하기
  • 스프링 데이터 리포짙토리를 위한 커스텀 구현체