將 Spanner 與 Hibernate ORM (GoogleSQL 方言) 整合

Hibernate 是 Java 程式設計語言的物件關聯對應工具。這個框架可將物件導向網域模型對應至關聯式資料庫。

您可以將 GoogleSQL 方言資料庫與 Hibernate 整合。 Spanner 與 Hibernate ORM 6.x 和 7.x 相容。 內建和開放原始碼方言都會使用標準 Hibernate 和 Java Persistence 註解,為最常見的實體型別和關係產生 SQL、DML 和 DDL 陳述式。

使用內建的 Hibernate 整合功能 (Hibernate ORM 7.4 以上版本)

從 Hibernate ORM 7.4 開始,Hibernate 內含 Spanner 的內建方言 (org.hibernate.dialect.SpannerDialect)。

建議新專案使用這個內建方言,因為不需要新增外部 google-cloud-spanner-hibernate-dialect 依附元件。內建方言缺少開放原始碼 Spanner 方言提供的部分功能和最佳化項目。

如要使用內建方言,請將 Hibernate ORM Core 和 Spanner JDBC 驅動程式的 Maven 依附元件新增至專案的 pom.xml 檔案。如要尋找這些依附元件的最新版本,請參閱 Hibernate ORM 版本Spanner JDBC 驅動程式版本

<dependencies>
  <!-- Hibernate ORM Core -->
  <dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>7.4.0.Final</version>
  </dependency>

  <!-- Cloud Spanner JDBC Driver -->
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-jdbc</artifactId>
    <version>2.40.0</version>
  </dependency>
</dependencies>

設定專案的 hibernate.properties 檔案 (通常位於 src/main/resources 目錄中),使用內建的 Spanner Dialect:

hibernate.dialect=org.hibernate.dialect.SpannerDialect
hibernate.connection.driver_class=com.google.cloud.spanner.jdbc.JdbcDriver
hibernate.connection.url=jdbc:cloudspanner:/projects/YOUR-PROJECT/instances/YOUR-INSTANCE/databases/YOUR-DATABASE

如要透過 JDBC 驅動程式向 Spanner 驗證,需要提供憑證。將 GOOGLE_APPLICATION_CREDENTIALS 環境變數設為服務帳戶 JSON 憑證檔案的路徑。否則,驅動程式會使用 Google Cloud CLI gcloud 應用程式中設定的預設憑證。

使用開放原始碼的 Spanner 方言

如果專案使用舊版 Hibernate (6.x 或 7.x,7.4 之前的版本),或者您需要內建方言尚未支援的功能和最佳化項目,可以使用開放原始碼的 Spanner 方言

如要使用開放原始碼方言,請將 Maven 依附元件新增至專案的 pom.xml 檔案:

<dependencies>
  <!-- The Spanner JDBC driver dependency -->
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-jdbc</artifactId>
  </dependency>

  <!-- Hibernate core dependency -->
  <dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>6.4.4.Final</version>
  </dependency>
</dependencies>

設定專案的 hibernate.properties 檔案,使用開放原始碼的 Spanner Dialect 和 JDBC 驅動程式:

hibernate.dialect=com.google.cloud.spanner.hibernate.SpannerDialect
hibernate.connection.driver_class=com.google.cloud.spanner.jdbc.JdbcDriver
hibernate.connection.url=jdbc:cloudspanner:/projects/YOUR-PROJECT/instances/YOUR-INSTANCE/databases/YOUR-DATABASE

如要進一步瞭解使用這個方言時的 Hibernate 功能和建議,請參閱 GitHub 上的參考文件

後續步驟