Integrate Spanner with Hibernate ORM (PostgreSQL dialect)

Hibernate is an object-relational mapping tool for the Java programming language. It provides a framework for mapping an object-oriented domain model to a relational database.

You can integrate PostgreSQL-dialect databases with Hibernate using the open source Spanner JDBC driver. Hibernate ORM 7.4 is supported with PostgreSQL-dialect databases.

Set up Hibernate with PostgreSQL

In your Google Cloud project, add Apache Maven dependencies for the Hibernate ORM core and Spanner JDBC driver.

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

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

Set up Hibernate properties

Configure hibernate.properties to use the SpannerPostgreSQLDialect, Spanner JDBC driver, and required connection properties in the URL.

hibernate.dialect=org.hibernate.dialect.SpannerPostgreSQLDialect
hibernate.connection.driver_class=com.google.cloud.spanner.jdbc.JdbcDriver

hibernate.connection.url=jdbc:cloudspanner:/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID?defaultsequencekind=bit_reversed_positive

hibernate.show_sql=true
hibernate.format_sql=true

# hibernate.hbm2ddl.auto validate
hibernate.hbm2ddl.auto=update

Use Hibernate

For more information about the features and recommendations for integrating Hibernate with PostgreSQL-dialect databases, please consult the reference documentation on GitHub.

What's next