스프링 부트 #4.11. SQL 데이터베이스 작업
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.10. 보안
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.8-9 Graceful/RSocket
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.7 웹 애플리케이션 개발
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.5-6 국제화/JSON
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.3-4 프로필/로깅
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.2 외부화된 구성
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #4.1 스프링 애플리케이션
2020/06/14 - [IT/SpringBoot] - 스프링 부트 #3. 사용
4.11. SQL 데이터베이스 작업
Spring Framework는 최대 절전 모드와 같은 "개체 관계형 매핑" 기술을 완료하는 데 사용하는 직접 JDBC 액세스에서 SQL 데이터베이스 작업에 대한 광범위한 지원을 제공합니다. Spring Data는 인터페이스에서 직접 구현을 만들고 규칙을 사용하여 메서드 이름에서 쿼리를 생성하는 등의 추가 수준의 기능을 제공합니다.JdbcTemplate
Repository
4.11.1. 데이터소스 구성
Java의 인터페이스는 데이터베이스 연결작업의 표준 방법을 제공합니다. 일반적으로 'DataSource'는 일부 자격 증명과 함께 데이터베이스 연결을 설정합니다.javax.sql.DataSource
URL
일반적으로 DataSource의 구성을 완전히 제어하려면 고급 예제의 "How-to" 섹션을 참조하십시오. |
임베디드 데이터베이스 지원
메모리 에 포함된 데이터베이스를 사용하여 응용 프로그램을 개발하는 것이 편리합니다. 메모리 내 데이터베이스는 영구 저장소를 제공하지 않습니다. 응용 프로그램이 시작될 때 데이터베이스를 채우고 응용 프로그램이 종료될 때 데이터를 버릴 준비를 해야 합니다.
"How-to" 섹션에는 데이터베이스를 초기화하는 방법에 대한 섹션이포함되어 있습니다. |
스프링 부트은 임베디드 H2, HSQL및 더비 데이터베이스를 자동으로 구성할 수 있습니다. 연결 URL을 제공할 필요가 없습니다. 사용하려는 임베디드 데이터베이스에 대한 빌드 종속성만 포함하면 됩니다.
테스트에서 이 기능을 사용하는 경우 사용하는 응용 프로그램 컨텍스트 수에 관계없이 전체 테스트 제품군에서 동일한 데이터베이스가 재사용된다는 것을 알 수 있습니다. 각 컨텍스트에 별도의 임베디드 데이터베이스가 있는지 확인하려면 . |
예를 들어 일반적인 POM 종속성은 다음과 같습니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
임베디드 데이터베이스를 자동으로 구성하려면 종속성이 필요합니다. 이 예제에서는 전송을 통해 전송됩니다. spring-jdbc spring-boot-starter-data-jpa |
어떤 이유로든 임베디드 데이터베이스에 대한 연결 URL을 구성하면 데이터베이스의 자동 종료가 비활성화되었는지 확인합니다. H2를 사용하는 경우 사용합니다. HSQLDB를 사용하는 경우 사용하지 않았는지 확인해야 합니다. 데이터베이스의 자동 종료를 사용하지 않도록 설정하면 데이터베이스가 닫히면 Spring Boot를 제어할 수 있으므로 데이터베이스에 대한 액세스가 더 이상 필요하지 않은 후에 발생합니다. DB_CLOSE_ON_EXIT=FALSE shutdown=true |
프로덕션 데이터베이스에 연결
프로덕션 데이터베이스 연결은 풀링을 사용하여 자동으로 구성할 수도 있습니다. 스프링 부트은 특정 구현을 선택하기 위해 다음 알고리즘을 사용합니다.DataSource
또는 "스타터"를 사용하는 경우 자동으로 종속성을 얻을 수 있습니다.spring-boot-starter-jdbc
spring-boot-starter-data-jpa
HikariCP
해당 알고리즘을 완전히 우회하고 속성을 설정하여 사용할 연결 풀을 지정할 수 있습니다. 기본적으로 제공되는 대로 Tomcat 컨테이너에서 응용 프로그램을 실행하는 경우 특히 중요합니다. spring.datasource.type tomcat-jdbc |
추가 연결 풀은 항상 수동으로 구성할 수 있습니다. 자신의 콩을 정의하면 자동 구성이 발생하지 않습니다. DataSource |
DataSource 구성은 외부 구성 속성에 의해 제어됩니다. 예를 들어 다음 섹션을 다음과 같은 섹션으로 선언할 수 있습니다.spring.datasource.*
application.properties
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
속성설정으로 URL을 지정해야 합니다. 그렇지 않으면 스프링 부트은 임베디드 데이터베이스를 자동으로 구성하려고 시도합니다. spring.datasource.url |
스프링 부트은 에서 대부분의 데이터베이스에 대 한 추론할 수 있기 때문에 종종 지정 할 필요가 없습니다.. driver-class-name url |
풀링을 만들려면 유효한 클래스를 사용할 수 있는지 확인할 수 있어야 하므로 작업을 수행하기 전에 해당 클래스를 확인할 수 있습니다. 즉, 설정하면 해당 클래스를 로드할 수 있어야 합니다. DataSource Driver spring.datasource.driver-class-name=com.mysql.jdbc.Driver |
지원되는 옵션에 대한 자세한 내용은 DataSourceProperties를
참조하십시오. 실제 구현에 관계없이 작동하는 표준 옵션입니다. 또한 각각의 접두사(및)를 사용하여 구현별 설정을 미세 조정할 수도 있습니다. 자세한 내용은 사용하는 연결 풀 구현 설명서를 참조하십시오.spring.datasource.hikari.*
spring.datasource.tomcat.*
spring.datasource.dbcp2.*
예를 들어 Tomcat 연결 풀을사용하는 경우 다음 예제와 같이 많은 추가 설정을 사용자 지정할 수 있습니다.
# Number of ms to wait before throwing an exception if no connection is available.
spring.datasource.tomcat.max-wait=10000
# Maximum number of active connections that can be allocated from this pool at the same time.
spring.datasource.tomcat.max-active=50
# Validate the connection before borrowing it from the pool.
spring.datasource.tomcat.test-on-borrow=true
JNDI 데이터소스에 대한 연결
스프링 부트 응용 프로그램을 응용 프로그램 서버에 배포하는 경우 응용 프로그램 서버의 기본 제공 기능을 사용하여 DataSource를 구성하고 관리하고 JNDI를 사용하여 데이터에 액세스할 수 있습니다.
이 숙박 시설은 특정 JNDI 위치에서 액세스할 수 있는 대안및 속성으로 사용할 수 있습니다. 예를 들어 다음 섹션에서는 정의된 JBoss AS에 액세스하는 방법을 보여 드립니다.spring.datasource.jndi-name
spring.datasource.url
spring.datasource.username
spring.datasource.password
DataSource
application.properties
DataSource
spring.datasource.jndi-name=java:jboss/datasources/customers
4.11.2. Jdbc템플릿 사용
스프링과 클래스는 자동 구성되며 다음 예제와 같이 자신의 콩에 직접 넣을 수 있습니다.JdbcTemplate
NamedParameterJdbcTemplate
@Autowire
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final JdbcTemplate jdbcTemplate;
@Autowired
public MyBean(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// ...
}
다음 예제와 같이 속성을 사용하여 템플릿의 일부 속성을 사용자 지정할 수 있습니다.spring.jdbc.template.*
spring.jdbc.template.max-rows=500
장면 뒤에서 동일한 인스턴스를 다시 사용합니다. 하나 이상의 정의되고 기본 후보가 없는 경우 자동 구성되지 않습니다. NamedParameterJdbcTemplate JdbcTemplate JdbcTemplate NamedParameterJdbcTemplate |
4.11.3. JPA 및 스프링 데이터 JPA
Java 지속성 API는 대상을 관계형 데이터베이스에 "매핑"할 수 있는 표준 기술입니다. POM은 빠른 시작 방법을 제공합니다. 다음과 같은 키 종속성을 제공합니다.spring-boot-starter-data-jpa
- 최대 절전 모드: 가장 인기 있는 JPA 구현 중 하나입니다.
- 스프링 데이터 JPA: JPA 기반 리포지토리를 쉽게 구현할 수 있습니다.
- 스프링 ORM: 스프링 프레임워크의 핵심 ORM 지원.
우리는 JPA 또는 스프링 데이터의 너무 많은 세부 사항에 가지 않습니다 여기에. spring.io "JPA로 데이터 액세스" 가이드를 따르고 스프링 데이터 JPA 및 최대 절전 모드 참조 문서를 읽을 수 있습니다. |
엔터티 클래스
일반적으로 JPA "엔터티" 클래스는 파일에 지정됩니다. 스프링 부트에서는 이 파일이 필요하지 않으며 대신 "엔터티 검색"을 사용합니다. 기본적으로 기본 구성 클래스 아래의 모든 패키지(에 음부또는 인음이 추가된 패키지)가 검색됩니다.persistence.xml
@EnableAutoConfiguration
@SpringBootApplication
모든 클래스에 추가, 또는 고려됩니다. 일반적인 엔터티 클래스는 다음 예제와 유사합니다.@Entity
@Embeddable
@MappedSuperclass
package com.example.myapp.domain;
import java.io.Serializable;
import javax.persistence.*;
@Entity
public class City implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String state;
// ... additional members, often include @OneToMany mappings
protected City() {
// no-args constructor required by JPA spec
// this one is protected since it shouldn't be used directly
}
public City(String name, String state) {
this.name = name;
this.state = state;
}
public String getName() {
return this.name;
}
public String getState() {
return this.state;
}
// ... etc
}
엔터티 검색 위치를 사용하여 사용자 지정할 수 있습니다. "스프링 구성에서 @Entity 정의 별도"방법 확인합니다. @EntityScan |
스프링 데이터 JPA 저장소
스프링 데이터 JPA 리포지토리는 데이터에 액세스하도록 정의할 수 있는 인터페이스입니다. JPA 쿼리는 메서드 이름에서 자동으로 만들어집니다. 예를 들어 인터페이스는 지정된 상태의 모든 도시를 찾는 메서드를 선언할 수 있습니다.CityRepository
findAllByState(String state)
보다 복잡한 쿼리의 경우 Spring Data의 쿼리
어노피로 메서드에 추가할 수 있습니다.
스프링 데이터 리포지토리는 일반적으로 리포지토리
또는 크루드리포지토리
인터페이스에서 확장됩니다. 자동 구성을 사용하는 경우 저장소는 기본 구성 클래스(또는 아래)가 포함된 패키지에서 검색됩니다.@EnableAutoConfiguration
@SpringBootApplication
다음 예제에서는 일반적인 스프링 데이터 리포지토리 인터페이스 정의를 보여 줍니다.
package com.example.myapp.domain;
import org.springframework.data.domain.*;
import org.springframework.data.repository.*;
public interface CityRepository extends Repository<City, Long> {
Page<City> findAll(Pageable pageable);
City findByNameAndStateAllIgnoringCase(String name, String state);
}
Spring Data JPA 리포지토리는 기본, 지연 및 지연세 의 세 가지 부트 트래핑 모드를 지원합니다. 지연 또는 지연 부트 스트랩을 사용하도록 설정하려면 속성을 각각 또는 각각 설정합니다. 지연 또는 지연 부트 스트랩을 사용하는 경우 자동 구성된 컨텍스트를 부트스트랩 실행기로 사용합니다. 하나 이상이 있으면 명명된 이름이 사용됩니다.spring.data.jpa.repositories.bootstrap-mode
deferred
lazy
EntityManagerFactoryBuilder
AsyncTaskExecutor
applicationTaskExecutor
우리는 스프링 데이터 JPA의 표면을 거의 긁지 못했다. 자세한 내용은 스프링 데이터 JPA 참조 설명서를참조하십시오. |
JPA 데이터베이스 만들기 및 삭제
기본적으로 포함된 데이터베이스(H2, HSQL 또는 Derby)를 사용하는 경우에만 JPA 데이터베이스가 자동으로 생성됩니다. 속성을 사용하여 JPA 설정을 명시적으로 구성할 수 있습니다. 예를 들어 테이블을 만들고 놓기 위해 다음 줄을 추가할 수 있습니다.spring.jpa.*
application.properties
spring.jpa.hibernate.ddl-auto=create-drop
최대 절전 모드 (당신이 그것을 더 잘 기억하는 일이 있다면) 이것에 대한 최대 절전 모드의 내부 속성 이름은 . 다른 최대 절전 모드 네이티브 속성과 함께 설정할 수 있습니다(접두사는 엔터티 관리자에 추가하기 전에 제거됩니다). 다음 줄은 최대 절전 모드에 대한 JPA 속성을 설정하는 예제를 보여 줄 수 있습니다. hibernate.hbm2ddl.auto spring.jpa.properties.* |
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
앞의 예제의 줄은 속성에 대한 값을 최대 절전 모드 엔터티 관리자에게 전달합니다.true
hibernate.globally_quoted_identifiers
기본적으로 DDL 실행(또는 유효성 검사)이 시작될 때까지 지연됩니다. 플래그도 있지만 설정이 더 세분화되어 있기 때문에 최대 절전 모드 자동 구성이 활성화되어 있는 경우에는 사용하지 않습니다.ApplicationContext
spring.jpa.generate-ddl
ddl-auto
뷰에서 엔터티 관리자 열기
웹 응용 프로그램을 실행하는 경우 스프링 부트은 기본적으로 OpenEntityManagerInView Interceptor를
등록하여 웹 뷰에서 지연 로드를 허용하기 위해 "뷰의 엔티티매니저 열기" 패턴을 적용합니다. 이 동작을 원하지 않는 경우 .spring.jpa.open-in-view
false
application.properties
4.11.4. 스프링 데이터 JDBC
Spring Data에는 JDBC에 대한 리포지토리 지원이 포함되어 있으며 에 있는 메서드에 대한 SQL이 자동으로 생성됩니다. 고급 쿼리의 경우 추가 어드밴스로 제공됩니다.CrudRepository
@Query
스프링 부트은 필요한 종속성이 클래스 경로에 있을 때 스프링 데이터의 JDBC 리포지토리를 자동으로 구성합니다. 단일 종속성을 사용하여 프로젝트에 추가할 수 있습니다. 필요한 경우 응용 프로그램에 어플리케이션 또는 하위 클래스를 추가하여 스프링 데이터 JDBC의 구성을 제어할 수 있습니다.spring-boot-starter-data-jdbc
@EnableJdbcRepositories
JdbcConfiguration
스프링 데이터 JDBC에 대한 자세한 내용은 참조 설명서를참조하십시오. |
4.11.5. H2의 웹 콘솔 사용
H2 데이터베이스는 스프링 부트이 자동으로 구성할 수 있는 브라우저 기반 콘솔을 제공합니다. 콘솔은 다음 조건이 충족되면 자동으로 구성됩니다.
- 서책제 웹 응용 프로그램을 개발하고 있습니다.
com.h2database:h2
클래스 경로에 있습니다.- 스프링 부트의 개발자 도구를사용하고 있습니다.
Spring Boot의 개발자 도구를 사용하지 않지만 여전히 H2의 콘솔을 사용하려는 경우 값을 사용하여 속성을 구성할 수 있습니다. spring.h2.console.enabled true |
H2 콘솔은 개발 중에만 사용하기 위한 것이므로 프로덕션 환경에서 설정되지 않도록 주의해야 합니다. spring.h2.console.enabled true |
H2 콘솔 경로 변경
기본적으로 콘솔은 에서 사용할 수 있습니다. 속성을 사용하여 콘솔의 경로를 사용자 지정할 수 있습니다./h2-console
spring.h2.console.path
4.11.6. jOOQ 사용
jOOQ 개체 지향쿼리(jOOQ)는데이터베이스에서 Java 코드를 생성하고 유창한 API를 통해 형식 안전 SQL 쿼리를 빌드할 수 있는 데이터 Geekery의 인기 제품입니다. 상업용 및 오픈 소스 에디션은 스프링 부트과 함께 사용할 수 있습니다.
코드 생성
jOOQ 형식 안전 쿼리를 사용하려면 데이터베이스 스키마에서 Java 클래스를 생성해야 합니다. jOOQ 사용자 설명서의지침을 따를 수 있습니다. 플러그인을 사용하고 "상위 POM"을 사용하는 경우 플러그인 태그를 안전하게 생략할 수 있습니다. 스프링 부트 정의 버전 변수(예:)를 사용하여 플러그인의 데이터베이스 종속성을 선언할 수도 있습니다. 다음 목록은 예제를 보여 주습니다.jooq-codegen-maven
spring-boot-starter-parent
<version>
h2.version
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<executions>
...
</executions>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
</dependency>
</dependencies>
<configuration>
<jdbc>
<driver>org.h2.Driver</driver>
<url>jdbc:h2:~/yourdatabase</url>
</jdbc>
<generator>
...
</generator>
</configuration>
</plugin>
DSLContext 사용
jOOQ에서 제공하는 유창한 API는 인터페이스를 통해 시작됩니다. 스프링 부트은 스프링 빈으로 자동 구성하고 응용 프로그램에 연결합니다. 다음 예제와 같이 사용하려면 다음 예제에서 와 같이 사용할 수 있습니다.org.jooq.DSLContext
DSLContext
DataSource
DSLContext
@Autowire
@Component
public class JooqExample implements CommandLineRunner {
private final DSLContext create;
@Autowired
public JooqExample(DSLContext dslContext) {
this.create = dslContext;
}
}
jOOQ 설명서는 이름을 보유하기 위해 명명된 변수를 사용하는 경향이 있습니다. create DSLContext |
그런 다음 다음 예제와 같이 쿼리를 구성하는 데 사용할 수 있습니다.DSLContext
public List<GregorianCalendar> authorsBornAfter1980() {
return this.create.selectFrom(AUTHOR)
.where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
.fetch(AUTHOR.DATE_OF_BIRTH);
}
jOOQ SQL 방언
속성이 구성되지 않는 한 스프링 부트은 데이터 원본에 사용할 SQL 방언을 결정합니다. 스프링 부트이 방언을 감지할 수 없는 경우 사용합니다.spring.jooq.sql-dialect
DEFAULT
스프링 부트은 jOOQ의 오픈 소스 버전에서 지원하는 방언만 자동 구성할 수 있습니다. |
사용자 정의 jOOQ
jOOQ가 생성될 때 사용되는 고유한 정의를 정의하여 고급 사용자 지정을 수행할 수 있습니다. 다음 jOOQ 유형에 대한 콩을 정의할 수 있습니다.@Bean
Configuration
ConnectionProvider
ExecutorProvider
TransactionProvider
RecordMapperProvider
RecordUnmapperProvider
Settings
RecordListenerProvider
ExecuteListenerProvider
VisitListenerProvider
TransactionListenerProvider
jOOQ 구성을 완벽하게 제어하려는 경우 직접 만들 수도 있습니다.org.jooq.Configuration
@Bean
4.11.7. R2DBC 사용
반응형 관계형 데이터베이스연결(R2DBC)프로젝트는 관계형 데이터베이스에 반응형 프로그래밍 API를 제공합니다. R2DBC는 차단되지 않는 데이터베이스 연결을 사용하는 표준 방법을 제공합니다. 연결은 jdbc와 유사한 것을 통해 제공됩니다.io.r2dbc.spi.Connection
ConnectionFactory
DataSource
ConnectionFactory
구성은 에서 외부 구성 속성에 의해 제어됩니다. 예를 들어 다음 섹션을 다음과 같은 섹션으로 선언할 수 있습니다.spring.r2dbc.*
application.properties
spring.r2dbc.url=r2dbc:postgresql://localhost/test
spring.r2dbc.username=dbuser
spring.r2dbc.password=dbpass
스프링 부트이 R2DBC의 연결 공장 검색에서 드라이버를 획득하기 때문에 드라이버 클래스 이름을 지정할 필요가 없습니다. |
적어도 URL을 제공해야 합니다. URL에 지정된 정보는 개별 속성(예: 풀링 옵션)보다 우선합니다. name username password |
"How-to" 섹션에는 데이터베이스를 초기화하는 방법에 대한 섹션이포함되어 있습니다. |
중앙 데이터베이스 구성에서 구성하지 않거나 구성할 수 없는 특정 매개 변수를 설정하여 만든 연결을 사용자 지정하려면 을 사용할 수 있습니다. 다음 예제에서는 데이터베이스 포트를 수동으로 재정의하는 방법을 보여 주며 나머지 옵션은 응용 프로그램 구성에서 가져옵니다.ConnectionFactory
ConnectionFactoryOptionsBuilderCustomizer
@Bean
@Bean
public ConnectionFactoryOptionsBuilderCustomizer connectionFactoryPortCustomizer() {
return (builder) -> builder.option(PORT, 5432);
}
다음 예제에서는 PostgreSQL 연결 옵션을 설정하는 방법을 보여 줄 수 있습니다.
@Bean
public ConnectionFactoryOptionsBuilderCustomizer postgresCustomizer() {
Map<String, String> options = new HashMap<>();
options.put("lock_timeout", "30s");
options.put("statement_timeout", "60s");
return (builder) -> builder.option(OPTIONS, options);
}
콩을 사용할 수 있는 경우 일반 jdbc 자동 구성이 다시 꺼져 있습니다.ConnectionFactory
DataSource
임베디드 데이터베이스 지원
JDBC 지원과마찬가지로 스프링 부트은 반응성 사용을 위해 임베디드 데이터베이스를 자동으로 구성할 수 있습니다. 연결 URL을 제공할 필요가 없습니다. 다음 예제와 같이 사용하려는 임베디드 데이터베이스에 대한 빌드 종속성만 포함하면 됩니다.
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-h2</artifactId>
<scope>runtime</scope>
</dependency>
테스트에서 이 기능을 사용하는 경우 사용하는 응용 프로그램 컨텍스트 수에 관계없이 전체 테스트 제품군에서 동일한 데이터베이스가 재사용된다는 것을 알 수 있습니다. 각 컨텍스트에 별도의 임베디드 데이터베이스가 있는지 확인하려면 . |
데이터베이스 클라이언트 사용
스프링 데이터의 클래스는 자동 구성되며 다음 예제와 같이 자신의 콩에 직접 넣을 수 있습니다.DatabaseClient
@Autowire
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.r2dbc.function.DatabaseClient;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final DatabaseClient databaseClient;
@Autowired
public MyBean(DatabaseClient databaseClient) {
this.databaseClient = databaseClient;
}
// ...
}
스프링 데이터 R2DBC 저장소
스프링 데이터 R2DBC 리포지토리는 데이터에 액세스하도록 정의할 수 있는 인터페이스입니다. 쿼리는 메서드 이름에서 자동으로 만들어집니다. 예를 들어 인터페이스는 지정된 상태의 모든 도시를 찾는 메서드를 선언할 수 있습니다.CityRepository
findAllByState(String state)
보다 복잡한 쿼리의 경우 Spring Data의 쿼리
어노피로 메서드에 추가할 수 있습니다.
스프링 데이터 리포지토리는 일반적으로 리포지토리
또는 크루드리포지토리
인터페이스에서 확장됩니다. 자동 구성을 사용하는 경우 저장소는 기본 구성 클래스(또는 아래)가 포함된 패키지에서 검색됩니다.@EnableAutoConfiguration
@SpringBootApplication
다음 예제에서는 일반적인 스프링 데이터 리포지토리 인터페이스 정의를 보여 줍니다.
package com.example.myapp.domain;
import org.springframework.data.domain.*;
import org.springframework.data.repository.*;
import reactor.core.publisher.Mono;
public interface CityRepository extends Repository<City, Long> {
Mono<City> findByNameAndStateAllIgnoringCase(String name, String state);
}
우리는 스프링 데이터 R2DBC의 표면을 거의 긁지 못했다. 자세한 내용은 스프링 데이터 R2DBC 참조 설명서를참조하십시오. |
Spring Boot Reference DocumentationPhillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić, Jay Bryant, Madhura Bhave, Eddú Meléndez, Scott FrederickLegal2.3.1.RELEASE Copyright © 2012-2020 Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically. |
출처 : https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/htmlsingle/#boot-features-sql