Spring Data JDBC はより大きな Spring Data ファミリーの一部であり、これを利用することで、アプリケーションで JDBC ベースのリポジトリを実装しやすくなります。アプリケーションとデータベースの間に抽象化レイヤが追加され、アプリケーションがデータベース間で簡単に移行できるようになります。
Spanner の GoogleSQL 言語データベースに Spring Data JDBC を設定する
Spanner GoogleSQL 言語のデータベースを Spring Data JDBC と統合するには、アプリケーションに Spanner GoogleSQL 用の言語を追加します。
言語の構成
Spring Data JDBC は使用するデータベースの言語を、Spring Data に構成されたデータソースの JDBC ドライバに基づいて選択します。Spanner JDBC ドライバを使う場合、Spring Data JDBC に GoogleSQL の言語を使わせるためには、アプリケーションに追加の言語プロバイダを組み込む必要があります。
public class SpannerDialectProvider implements DialectResolver.JdbcDialectProvider {
@Override
public Optional<Dialect> getDialect(JdbcOperations operations) {
return Optional.ofNullable(
operations.execute((ConnectionCallback<Dialect>) SpannerDialectProvider::getDialect));
}
@Nullable
private static Dialect getDialect(Connection connection) throws SQLException {
DatabaseMetaData metaData = connection.getMetaData();
String name = metaData.getDatabaseProductName().toLowerCase(Locale.ENGLISH);
if (name.contains("spanner")) {
return SpannerDialect.INSTANCE;
}
return null;
}
}
この言語プロバイダは、アプリケーションの spring.factories
ファイルに追加する必要があります。
org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=org.springframework.data.jdbc.repository.config.DialectResolver.DefaultDialectProvider,com.google.cloud.spanner.sample.SpannerDialectProvider
例を見たい場合は、GitHub 上にある完全に動作するサンプル アプリケーションを参照してください。
依存関係
プロジェクトに、Spring Data JDBC と Spanner JDBC ドライバの Apache Maven 依存関係を追加します。
<dependencies>
<!-- Spring Data JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- Spanner JDBC driver -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner-jdbc</artifactId>
</dependency>
<dependencies>
データソースの設定
Spanner JDBC ドライバを使用して Spanner GoogleSQL 言語のデータベースに接続するように application.properties
を構成します。
spanner.project=my-project
spanner.instance=my-instance
spanner.database=spring-data-jdbc
spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver
spring.datasource.url=jdbc:cloudspanner:/projects/${spanner.project}/instances/${spanner.instance}/databases/${spanner.database}
完全なサンプル アプリケーション
サンプル アプリケーションでこの統合を試すには、Spring Data JDBC Sample Application with Spanner GoogleSQL を参照してください。
次のステップ
- Spring Data JDBC の詳細を確認する。
- GitHub の issue を作成してバグを報告するか、Spanner JDBC ドライバについて質問する。