Spanner in Hibernate ORM (GoogleSQL-Dialekt) einbinden

Hibernate ist ein Tool für die objektrelationale Zuordnung für die Programmiersprache Java. Es bietet ein Framework zum Zuordnen eines objektorientierten Domänenmodells zu einer relationalen Datenbank.

Sie können GoogleSQL-Dialektdatenbanken in Hibernate einbinden. Cloud Spanner ist mit Hibernate ORM 6.x und 7.x kompatibel. Hibernate ORM hat einen integrierten Cloud Spanner-Dialekt. Außerdem ist auf GitHub ein von Google verwalteter Hibernate-Dialekt verfügbar. Beide Dialekte erstellen SQL-, DML- und DDL-Anweisungen für die gängigsten Entitätstypen und ‑beziehungen. Dazu werden standardmäßige Hibernate- und Java Persistence-Anmerkungen verwendet.

Integrierte Hibernate-Einbindung verwenden (Hibernate ORM 7.4+)

Ab Hibernate ORM 7.4 enthält Hibernate einen integrierten Dialekt für Cloud Spanner (org.hibernate.dialect.SpannerDialect).

Wir empfehlen, diesen integrierten Dialekt für neue Projekte zu verwenden, da die externe Abhängigkeit google-cloud-spanner-hibernate-dialect nicht hinzugefügt werden muss. Der integrierte Dialekt unterstützt standardmäßige Hibernate-Funktionen. Wenn Ihre Anwendung erweiterte Cloud Spanner-spezifische Funktionen erfordert, empfehlen wir stattdessen die Verwendung des von Google verwalteten externen Dialekts.

Wenn Sie den integrierten Dialekt verwenden möchten, fügen Sie der Datei pom.xml Ihres Projekts die Maven-Abhängigkeiten für den Hibernate ORM-Kern und den Cloud Spanner-JDBC-Treiber hinzu. Die neuesten Versionen dieser Abhängigkeiten finden Sie in den Hibernate ORM-Releases und den Cloud Spanner-JDBC-Treiber-Releases:

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

Konfigurieren Sie die Datei hibernate.properties Ihres Projekts (in der Regel im Verzeichnis src/main/resources), um den integrierten Cloud Spanner-Dialekt zu verwenden:

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

Für die Authentifizierung bei Cloud Spanner benötigt der JDBC-Treiber Anmeldedaten. Legen Sie die GOOGLE_APPLICATION_CREDENTIALS Umgebungsvariable auf den Pfad der JSON-Datei mit den Anmeldedaten Ihres Dienstkontos fest. Andernfalls verwendet der Treiber die Standardanmeldedaten, die in der Google Cloud CLI-Anwendung gcloud festgelegt sind.

Von Google verwalteten Cloud Spanner-Dialekt verwenden

Für Projekte mit früheren Versionen von Hibernate (6.x oder 7.x vor 7.4) oder wenn Sie erweiterte Cloud Spanner-spezifische Funktionen benötigen, die vom integrierten Dialekt noch nicht unterstützt werden, können Sie den von Google verwalteten Cloud Spanner-Dialekt verwenden.

Zu den erweiterten Funktionen, die vom von Google verwalteten Dialekt unterstützt werden, gehören:

  • Überlappende Tabellenhierarchien (@Interleaved)
  • Hinweise zu Abfragen, Indexen und Scans
  • Batching von DDL-Schemas
  • Transaktionstags (@TransactionTag)
  • Gepoolte Sequenzen (@PooledBitReversedSequenceGenerator)

Wenn Sie den von Google verwalteten Dialekt verwenden möchten, fügen Sie der Datei pom.xml Ihres Projekts die Maven-Abhängigkeiten hinzu:

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

Konfigurieren Sie die Datei hibernate.properties Ihres Projekts, um den von Google verwalteten Cloud Spanner-Dialekt und den JDBC-Treiber zu verwenden:

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

Weitere Informationen zu den Funktionen und Empfehlungen für Hibernate bei Verwendung dieses Dialekts finden Sie in der Referenzdokumentation auf GitHub.

Nächste Schritte