Spring Data JPA, qui fait partie de la famille Spring Data, facilite la mise en œuvre des dépôts basés sur JPA. Spring Data JPA est compatible avec PostgreSQL et d'autres systèmes de base de données. Il ajoute une couche d'abstraction entre votre application et votre base de données, ce qui facilite le port de votre application d'un système de base de données à un autre.
Configurer Spring Data JPA pour les bases de données de dialecte PostgreSQL dans Spanner
Vous pouvez intégrer des bases de données de dialecte PostgreSQL Spanner à Spring Data JPA à l'aide du dialecte Hibernate standard de PostgreSQL et de PGAdapter.
Pour voir un exemple, reportez-vous à l'exemple d'application fonctionnel complet sur GitHub.
Dépendances
Dans votre projet, ajoutez des dépendances Apache Maven pour Spring Data JPA, le pilote JDBC PostgreSQL et 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>
Démarrer PGAdapter en cours de traitement
Ajoutez la méthode suivante à votre application pour démarrer PGAdapter directement depuis votre application Java. PGAdapter s'exécute sur la même JVM que votre application et celle-ci se connecte à PGAdapter sur 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;
}
Configuration
Configurez application.properties
pour utiliser le dialecte Hibernate PostgreSQL et le pilote JDBC PostgreSQL. Configurez le pilote JDBC PostgreSQL pour qu'il se connecte à une base de données de dialecte PostgreSQL via 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
Exemple d'application complète
Un exemple d'application fonctionnelle est disponible sur GitHub.
Étapes suivantes
- Apprenez-en plus sur Spring Data JPA.
- Approfondissez vos connaissances sur Hibernate ORM.
- Affichez le dépôt de PGAdapter sur GitHub.
- Signalez un problème sur GitHub pour signaler un bug ou poser une question sur PGAdapter.
- Intégrer Spanner à Spring Data JPA (dialecte GoogleSQL)