將 Spanner 與 Spring Data JPA (GoogleSQL 方言) 整合

Spring Data JPA 是 Spring Data 大家族的一員,可讓您更輕鬆地實作以 JPA 為基礎的存放區。Spring Data JPA 支援 Spanner 和多種其他資料庫系統。它會在應用程式和資料庫之間新增抽象層,讓應用程式更容易從一個資料庫系統移植到另一個系統。

為 Spanner GoogleSQL 方言資料庫設定 Spring Data JPA

您可以使用開放原始碼的 Spanner Hibernate 方言 (SpannerDialect),將 Spanner GoogleSQL 方言資料庫與 Spring Data JPA 整合。

如需查看範例,請參閱 GitHub 上的完整可運作範例應用程式

依附元件

在專案中,為 Spring Data JPASpanner Hibernate Dialect 和 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>

設定

設定 application.properties 以使用 Spanner Hibernate 方言和 Spanner JDBC 驅動程式。

# 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 上找到可運作的範例應用程式

後續步驟