Spanner を Spring Data JPA(GoogleSQL 言語)と統合する

Spring Data ファミリーの一部である Spring Data JPA を使用すると、JPA ベースのリポジトリを簡単に実装できます。Spring Data JPA は、Spanner や他の幅広いデータベース システムをサポートしています。アプリケーションとデータベースの間に抽象化レイヤが追加され、アプリケーションがデータベース間で簡単に移行できるようになります。

Spanner の GoogleSQL 言語データベースに Spring Data JPA を設定する

オープンソースの Spanner Hibernate 言語SpannerDialect)を使用して、Spanner GoogleSQL 言語データベースを Spring Data JPA と統合できます。

サンプルについては、GitHub の完全な作業用サンプル アプリケーションをご覧ください。

依存関係

プロジェクトで、Spring Data JPASpanner Hibernate 言語、Spanner で公式にサポートされているオープンソース JDBC ドライバの Apache Maven 依存関係を追加します。

  <dependencies>
    <!-- Spring Data JPA -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- Hibernate Dialect and JDBC Driver dependencies-->
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-hibernate-dialect</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-jdbc</artifactId>
    </dependency>
  </dependencies>

構成

Spanner Hibernate 言語と Spanner JDBC ドライバを使用するように application.properties を構成します。

# Spanner connection URL.
# - ${PROJECT_ID} Replace with your GCP project ID
# - ${INSTANCE_ID} Replace with your Spanner instance ID
# - ${DATABASE_NAME} Replace with the name of your Spanner database that you created inside your Spanner instance

spring.datasource.url=jdbc:cloudspanner:/projects/${PROJECT_ID}/instances/${INSTANCE_ID}/databases/${DATABASE_NAME}

# Specify the Spanner JDBC driver.
spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver

# Specify the Spanner Hibernate dialect.
spring.jpa.properties.hibernate.dialect=com.google.cloud.spanner.hibernate.SpannerDialect

spring.jpa.hibernate.ddl-auto=update

# Settings to enable batching statements for efficiency
spring.jpa.properties.hibernate.jdbc.batch_size=100
spring.jpa.properties.hibernate.order_inserts=true

# 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

完全なサンプル アプリケーション

作業用サンプル アプリケーションは GitHub で入手できます。

次のステップ