Spring Data JPA, que forma parte de la familia Spring Data, facilita la implementación de repositorios basados en JPA. Spring Data JPA es compatible con Spanner y con una amplia gama de otros sistemas de bases de datos. Añade una capa de abstracción entre tu aplicación y tu base de datos que facilita la portabilidad de tu aplicación de un sistema de base de datos a otro.
Configurar Spring Data JPA para bases de datos con dialecto GoogleSQL de Spanner
Puedes integrar bases de datos de dialecto GoogleSQL de Spanner con Spring Data JPA mediante el
dialecto de Hibernate de Spanner de código abierto
(SpannerDialect
).
Para ver un ejemplo, consulta la aplicación de ejemplo funcional completa en GitHub.
Dependencias
En tu proyecto, añade dependencias de Apache Maven para Spring Data JPA, Spanner Hibernate Dialect y el controlador JDBC de código abierto compatible oficialmente con Spanner.
<dependencies>
<!-- Spring Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Hibernate Dialect and JDBC Driver dependencies-->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner-hibernate-dialect</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner-jdbc</artifactId>
</dependency>
</dependencies>
Configuración
Configura application.properties
para que use el dialecto de Hibernate de Spanner y el controlador JDBC de Spanner.
# Spanner connection URL.
# - ${PROJECT_ID} Replace with your GCP project ID
# - ${INSTANCE_ID} Replace with your Spanner instance ID
# - ${DATABASE_NAME} Replace with the name of your Spanner database that you created inside your Spanner instance
spring.datasource.url=jdbc:cloudspanner:/projects/${PROJECT_ID}/instances/${INSTANCE_ID}/databases/${DATABASE_NAME}
# Specify the Spanner JDBC driver.
spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver
# Specify the Spanner Hibernate dialect.
spring.jpa.properties.hibernate.dialect=com.google.cloud.spanner.hibernate.SpannerDialect
spring.jpa.hibernate.ddl-auto=update
# Settings to enable batching statements for efficiency
spring.jpa.properties.hibernate.jdbc.batch_size=100
spring.jpa.properties.hibernate.order_inserts=true
# 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
Aplicación de ejemplo completa
En GitHub hay una aplicación de muestra que funciona.
Siguientes pasos
- Más información sobre Spring Data JPA
- Consulta más información sobre Hibernate ORM.
- Consulta el repositorio de dialecto de Spanner en GitHub.
- Registra una incidencia en GitHub para informar de un error o hacer una pregunta sobre Hibernate.
- Integra Spanner con Spring Data JPA (dialecto de PostgreSQL).