Spring Data JPA, che fa parte della più grande famiglia Spring Data, semplifica l'implementazione di repository basati su JPA. Spring Data JPA supporta PostgreSQL e una vasta gamma di altri sistemi di database. Aggiunge un livello di astrazione tra la tua applicazione e il tuo database che semplifica il porting da un sistema di database a un altro.
Configurare Spring Data JPA per i database con dialetto PostgreSQL di Spanner
Puoi integrare i database con il dialetto PostgreSQL di Spanner con Spring Data JPA utilizzando il dialetto PostgreSQL Hibernate standard e PGAdapter.
Per un esempio, consulta la completa applicazione di esempio funzionante su GitHub.
Dipendenze
Nel progetto, aggiungi le dipendenze Apache Maven per Spring Data JPA, il driver JDBC PostgreSQL e PGAdapter.
  <dependencies>
    <!-- Spring Data JPA -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- Add the PostgreSQL JDBC driver -->
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
    </dependency>
    <!-- Add PGAdapter as a dependency, so we can start it in-process -->
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-pgadapter</artifactId>
    </dependency>
  </dependencies>
Avvia PGAdapter in-process
Aggiungi il seguente metodo all'applicazione per avviare PGAdapter direttamente dall'applicazione Java. PGAdapter viene eseguito nella stessa JVM della tua applicazione, che si connette a PGAdapter su localhost:port.
  /** Starts PGAdapter in-process and returns a reference to the server. */
  static ProxyServer startPGAdapter() {
    // Start PGAdapter using the default credentials of the runtime environment on port 9432.
    OptionsMetadata options = OptionsMetadata.newBuilder().setPort(9432).build();
    ProxyServer server = new ProxyServer(options);
    server.startServer();
    server.awaitRunning();
    return server;
  }
Configurazione
Configura application.properties in modo che utilizzi il dialetto PostgreSQL Hibernate e il driver JDBC PostgreSQL. Configura il driver JDBC PostgreSQL per connetterti a un database in dialetto PostgreSQL tramite PGAdapter.
# The example uses the standard PostgreSQL Hibernate dialect.
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
# Defining these properties here makes it a bit easier to build the connection string.
# Change these to match your Cloud Spanner PostgreSQL-dialect database.
spanner.project=my-project
spanner.instance=my-instance
spanner.database=my-database
# This setting ensures that PGAdapter automatically commits the current transaction if it encounters
# a DDL statement in a read/write transaction, and then executes the DDL statements as a single DDL
# batch.
spanner.ddl_transaction_mode=options=-c%20spanner.ddl_transaction_mode=AutocommitExplicitTransaction
# This is the connection string to PGAdapter running in-process.
spring.datasource.url=jdbc:postgresql://localhost:9432/projects%2F${spanner.project}%2Finstances%2F${spanner.instance}%2Fdatabases%2F${spanner.database}?${spanner.ddl_transaction_mode}
# You can display SQL statements and stats for debugging if needed.
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
# Enable JDBC batching.
spring.jpa.properties.hibernate.jdbc.batch_size=100
spring.jpa.properties.hibernate.order_inserts=true
Applicazione di esempio completa
Su GitHub è disponibile un'applicazione di esempio funzionante.
Passaggi successivi
- Scopri di più su Spring Data JPA.
- Scopri di più su Hibernate ORM.
- Visualizza il repository di PGAdapter su GitHub.
- Invia una segnalazione su GitHub per segnalare un bug o porre una domanda su PGAdapter.
- Esegui l'integrazione di Spanner con Spring Data JPA (dialetto GoogleSQL).