Integrare Spanner con Hibernate ORM (dialetto GoogleSQL)

Hibernate è uno strumento di mappatura relazionale degli oggetti per il linguaggio di programmazione Java. Fornisce un framework per la mappatura di un modello di dominio orientato agli oggetti a un database relazionale.

Puoi integrare i database con dialetto GoogleSQL con Hibernate. Spanner è compatibile con Hibernate ORM 6.x e 7.x. Sia il dialetto integrato sia quello open source producono istruzioni SQL, DML e DDL per i tipi di entità e le relazioni più comuni utilizzando le annotazioni standard di Hibernate e Java Persistence.

Utilizzare l'integrazione Hibernate integrata (Hibernate ORM 7.4+)

A partire da Hibernate ORM 7.4, Hibernate include un dialetto integrato per Spanner (org.hibernate.dialect.SpannerDialect).

Ti consigliamo di utilizzare questo dialetto integrato per i nuovi progetti, in quanto non richiede l'aggiunta della dipendenza esterna google-cloud-spanner-hibernate-dialect. Il dialetto integrato non include alcune funzionalità e ottimizzazioni disponibili nel dialetto Spanner open source.

Per utilizzare il dialetto integrato, aggiungi le dipendenze Maven per il core di Hibernate ORM e il driver JDBC di Spanner al file pom.xml del progetto. Per trovare le versioni più recenti di queste dipendenze, consulta le release di Hibernate ORM e le release del driver JDBC di Spanner:

<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>

Configura il file hibernate.properties del progetto (in genere si trova nella directory src/main/resources) in modo che utilizzi il dialetto Spanner integrato:

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

Per l'autenticazione con Spanner, il driver JDBC richiede le credenziali. Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS sul percorso del file JSON delle credenziali dell'account di servizio. In caso contrario, il driver utilizza le credenziali predefinite impostate nell'applicazione gcloud di Google Cloud CLI.

Utilizzare il dialetto Spanner open source

Per i progetti che utilizzano versioni precedenti di Hibernate (6.x o 7.x precedenti alla 7.4) o se hai bisogno di funzionalità e ottimizzazioni non ancora supportate dal dialetto integrato, puoi utilizzare il dialetto Spanner open source.

Per utilizzare il dialetto open source, aggiungi le dipendenze Maven al file pom.xml del progetto:

<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>

Configura il file hibernate.properties del progetto in modo che utilizzi il dialetto Spanner open source e il driver 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

Per saperne di più sulle funzionalità e sui consigli per Hibernate quando utilizzi questo dialetto, consulta la documentazione di riferimento su GitHub.

Passaggi successivi