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 檔案:
設定專案的 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 上的參考文件。
後續步驟
- 如需使用 Hibernate 和 Spanner 的程式碼範例,請參閱這篇文章。
- 試試 Spanner 與 Hibernate ORM 程式碼研究室。
- 進一步瞭解 Hibernate ORM。
- 在 GitHub 上查看 Spanner Dialect 的存放區。
- 如要回報錯誤或詢問有關 Hibernate 的問題,請在 GitHub 上提出問題。
- 進一步瞭解 Apache Maven。
- 進一步瞭解如何整合 Spanner 與 Hibernate ORM (PostgreSQL 方言)。