대규모 Spring Data 계열의 일부인 Spring Data JPA를 사용하면 JPA 기반 저장소를 더욱 쉽게 구현할 수 있습니다. Spring Data JPA는 PostgreSQL 및 다양한 데이터베이스 시스템을 지원합니다. 애플리케이션이 한 데이터베이스 시스템에서 다른 데이터베이스 시스템으로 쉽게 포팅할 수 있게 하는 데이터베이스와 애플리케이션 사이에 추상화 레이어를 추가합니다.
Spanner PostgreSQL 언어 데이터베이스용 Spring Data JPA 설정
표준 PostgreSQL Hibernate 언어 및 PGAdapter를 사용하여 Spanner PostgreSQL 언어 데이터베이스와 Spring Data JPA를 통합할 수 있습니다.
예시를 보려면 GitHub에서 전체 작동하는 샘플 애플리케이션을 참조하세요.
종속 항목
프로젝트에서 Spring Data JPA, PostgreSQL JDBC 드라이버, PGAdapter에 대한 Apache Maven 종속 항목을 추가합니다.
<dependencies>
<!-- Spring Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Add the PostgreSQL JDBC driver -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<!-- Add PGAdapter as a dependency, so we can start it in-process -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner-pgadapter</artifactId>
</dependency>
</dependencies>
진행 중인 PGAdapter 시작
애플리케이션에 다음 메서드를 추가하여 자바 애플리케이션에서 직접 PGAdapter를 시작합니다. PGAdapter는 애플리케이션과 동일한 JVM에서 실행되며 애플리케이션은 localhost:port
의 PGAdapter에 연결됩니다.
/** Starts PGAdapter in-process and returns a reference to the server. */
static ProxyServer startPGAdapter() {
// Start PGAdapter using the default credentials of the runtime environment on port 9432.
OptionsMetadata options = OptionsMetadata.newBuilder().setPort(9432).build();
ProxyServer server = new ProxyServer(options);
server.startServer();
server.awaitRunning();
return server;
}
구성
PostgreSQL Hibernate 언어 및 PostgreSQL JDBC 드라이버를 사용하려면 application.properties
를 구성합니다. PGAdapter를 통해 PostgreSQL 언어 데이터베이스에 연결할 PostgreSQL JDBC 드라이버를 구성합니다.
# The example uses the standard PostgreSQL Hibernate dialect.
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
# Defining these properties here makes it a bit easier to build the connection string.
# Change these to match your Cloud Spanner PostgreSQL-dialect database.
spanner.project=my-project
spanner.instance=my-instance
spanner.database=my-database
# This setting ensures that PGAdapter automatically commits the current transaction if it encounters
# a DDL statement in a read/write transaction, and then executes the DDL statements as a single DDL
# batch.
spanner.ddl_transaction_mode=options=-c%20spanner.ddl_transaction_mode=AutocommitExplicitTransaction
# This is the connection string to PGAdapter running in-process.
spring.datasource.url=jdbc:postgresql://localhost:9432/projects%2F${spanner.project}%2Finstances%2F${spanner.instance}%2Fdatabases%2F${spanner.database}?${spanner.ddl_transaction_mode}
# You can display SQL statements and stats for debugging if needed.
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
# Enable JDBC batching.
spring.jpa.properties.hibernate.jdbc.batch_size=100
spring.jpa.properties.hibernate.order_inserts=true
전체 샘플 애플리케이션
GitHub에서 작동 중인 샘플 애플리케이션을 사용할 수 있습니다.
다음 단계
- Spring Data JPA 자세히 알아보기
- Hibernate ORM에 대해 자세히 알아보세요.
- GitHub에서 PGAdapter 저장소를 봅니다.
- 버그를 보고하거나 PGAdapter에 대해 질문하려면 GitHub 문제를 제출합니다.
- Spanner와 Spring Data JPA(GoogleSQL 언어) 통합