Spring Data JPA, parte della più ampia famiglia di dati Spring Data, semplifica l'implementazione dei repository basati su JPA. Spring Data JPA supporta PostgreSQL e molti altri sistemi di database. Aggiunge un livello di astrazione tra l'applicazione e il database per semplificare la portabilità dell'applicazione da un sistema di database all'altro.
Configura Spring Data JPA per database Spanner PostgreSQL
Puoi integrare database Spanner dialetto PostgreSQL con Spring Data JPA utilizzando il dialetto standard PostgreSQL con Hibernate e PGAdapter.
Per un esempio, consulta l'applicazione di esempio funzionante su GitHub.
Dipendenze
Nel progetto, aggiungi le dipendenze di Apache Maven per Spring Data JPA, il driver JDBC di 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 metodo seguente alla tua applicazione per avviare PGAdapter
direttamente dalla tua applicazione Java. PGAdapter viene eseguito nella stessa JVM della tua applicazione e l'applicazione si connette a PGAdapter il giorno 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
per utilizzare PostgreSQL Hibernate
Dialect e il driver JDBC di PostgreSQL. Configura il driver JDBC PostgreSQL per la connessione a un database 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 per PGAdapter su GitHub.
- Invia una segnalazione su GitHub per segnalare un bug o fare una domanda su PGAdapter.
- Integra Spanner con Spring Data JPA (dialetto GoogleSQL).