大規模な 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 を処理中に開始する
アプリケーションに次のメソッドを追加して、Java アプリケーションから直接 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 のリポジトリを表示する。
- GitHub の問題を提出してバグを報告するか、PGAdapter について質問する。
- Spanner を Spring Data JPA(GoogleSQL 言語)と統合する。