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. Hibernate ORM ha un dialetto Spanner integrato ed è disponibile anche un dialetto Hibernate gestito da Google su GitHub. Entrambi i dialetti 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 supporta le funzionalità standard di Hibernate. Se la tua applicazione richiede funzionalità avanzate specifiche di Spanner, ti consigliamo di utilizzare il dialetto esterno gestito da Google.

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) per utilizzare 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 gestito da Google

Per i progetti che utilizzano versioni precedenti di Hibernate (6.x o 7.x precedenti alla 7.4) o se hai bisogno di funzionalità avanzate specifiche di Spanner non ancora supportate dal dialetto integrato, puoi utilizzare il dialetto Spanner gestito da Google.

Le funzionalità avanzate supportate dal dialetto gestito da Google includono:

  • Gerarchie di tabelle con interfoliazione (@Interleaved)
  • Suggerimenti per query, indici e scansioni
  • Batch di schemi DDL
  • Tagging delle transazioni (@TransactionTag)
  • Sequenze in pool (@PooledBitReversedSequenceGenerator)

Per utilizzare il dialetto gestito da Google, 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 per utilizzare il dialetto Spanner gestito da Google 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