Integrar o Spanner com o Hibernate ORM (dialeto GoogleSQL)

O Hibernate é uma ferramenta de mapeamento objeto-relacional para a linguagem de programação Java. Ele fornece um framework para o mapeamento de um modelo de domínio orientado a objetos para um banco de dados relacional.

É possível integrar bancos de dados do dialeto GoogleSQL com o Hibernate usando o dialeto do Spanner (SpannerDialect) de código aberto. O Spanner é compatível com o Hibernate ORM 6.3. O Dialeto do Spanner produz instruções SQL, DML e DDL para os tipos de entidade e relacionamentos mais comuns usando anotações padrão do Hibernate e do Java Persistência.

Configurar o Hibernate

No seu projeto, adicione dependências do Apache Maven para o núcleo do Hibernate ORM, o dialeto do Spanner e o driver JDBC de código aberto do Spanner oficialmente compatível.

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

Configure hibernate.cfg.xml para usar o dialeto do Spanner e o driver JDBC do Spanner.

<!-- Connection settings -->
<property name="hibernate.dialect">org.hibernate.dialect.SpannerDialect</property>
<property name="hibernate.connection.driver_class">com.google.cloud.spanner.jdbc.JdbcDriver</property>
<property name="hibernate.connection.url">jdbc:cloudspanner:/projects/{YOUR_PROJECT_ID}/instances/{YOUR_INSTANCE_ID}/databases/{YOUR_DATABASE_ID}</property>

O arquivo das credenciais JSON da conta de serviço deve estar localizado na variável de ambiente GOOGLE_APPLICATION_CREDENTIALS. Caso contrário, o driver usará as credenciais padrão definidas no aplicativo gcloud da Google Cloud CLI.

Usar o Hibernate com o GoogleSQL do Spanner

Para saber mais sobre os recursos e as recomendações do Hibernate, consulte a documentação de referência (link em inglês) no GitHub.

A seguir