שילוב של Spanner עם Spring Data JPA (ניב GoogleSQL)

‫Spring Data JPA, חלק מהמשפחה הגדולה יותר של Spring Data, מקל על הטמעה של מאגרי מידע מבוססי JPA. ‫Spring Data JPA תומך ב-Spanner ובמגוון רחב של מערכות מסדי נתונים אחרות. היא מוסיפה שכבת הפשטה בין האפליקציה לבין מסד הנתונים, וכך מקלה על העברת האפליקציה ממערכת מסד נתונים אחת לאחרת.

הגדרת Spring Data JPA למסדי נתונים של Spanner עם ניב GoogleSQL

אתם יכולים לשלב מסדי נתונים של Spanner GoogleSQL-dialect עם Spring Data JPA באמצעות Spanner Hibernate Dialect (SpannerDialect) בקוד פתוח.

כדי לראות דוגמה, אפשר לעיין באפליקציה לדוגמה שעובדת המלאה ב-GitHub.

תלויות

בפרויקט, מוסיפים תלות ב-Apache Maven עבור Spring Data JPA,‏ Spanner Hibernate Dialect ומנהל התקן JDBC בקוד פתוח שנתמך רשמית על ידי Spanner.

  
    
    
      org.springframework.boot
      spring-boot-starter-data-jpa
    
    
    
      com.google.cloud
      google-cloud-spanner-hibernate-dialect
    
    
      com.google.cloud
      google-cloud-spanner-jdbc
    
  

הגדרות אישיות

מגדירים את application.properties כך שישתמש ב-Spanner Hibernate Dialect וב-Spanner JDBC Driver.

# Spanner connection URL.
# - ${PROJECT_ID} Replace with your Google Cloud 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

אפליקציה לדוגמה מלאה

אפליקציה לדוגמה שפועלת זמינה ב-GitHub.

המאמרים הבאים