שילוב של 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.

  <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>

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

מגדירים את 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.

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