שילוב של Spanner עם Hibernate ORM (ניב GoogleSQL)

‫Hibernate הוא כלי למיפוי יחסי אובייקטים לשפת התכנות Java. הוא מספק מסגרת למיפוי של מודל דומיין מונחה-עצמים למסד נתונים רלציוני.

אפשר לשלב מסדי נתונים של ניב GoogleSQL עם Hibernate. ‫Spanner תואם ל-Hibernate ORM 6.x ו-7.x. גם הדיאלקט המובנה וגם הדיאלקט בקוד פתוח יוצרים הצהרות SQL, ‏ DML ו-DDL עבור רוב סוגי הישויות והקשרים הנפוצים, באמצעות אנוטציות סטנדרטיות של Hibernate ו-Java Persistence.

שימוש בשילוב מובנה של Hibernate‏ (Hibernate ORM 7.4 ואילך)

החל מ-Hibernate ORM 7.4, ‏ Hibernate כולל ניב מובנה ל-Spanner ‏ (org.hibernate.dialect.SpannerDialect).

מומלץ להשתמש בניב המובנה הזה בפרויקטים חדשים, כי לא צריך להוסיף את התלות החיצונית google-cloud-spanner-hibernate-dialect. בניב המובנה חסרות חלק מהתכונות והאופטימיזציות שזמינות בניב Spanner בקוד פתוח.

כדי להשתמש בניב המובנה, מוסיפים את יחסי התלות של Maven עבור Hibernate ORM core ואת מנהל ההתקן Spanner JDBC לקובץ pom.xml של הפרויקט. כדי למצוא את הגרסאות העדכניות של התלויות האלה, אפשר לעיין בגרסאות של Hibernate ORM ובגרסאות של Spanner JDBC driver:

<dependencies>
  <!-- Hibernate ORM Core -->
  <dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>7.4.0.Final</version>
  </dependency>

  <!-- Cloud Spanner JDBC Driver -->
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-jdbc</artifactId>
    <version>2.40.0</version>
  </dependency>
</dependencies>

מגדירים את קובץ hibernate.properties של הפרויקט (בדרך כלל נמצא בספרייה src/main/resources) כך שישתמש ב-Spanner Dialect המובנה:

hibernate.dialect=org.hibernate.dialect.SpannerDialect
hibernate.connection.driver_class=com.google.cloud.spanner.jdbc.JdbcDriver
hibernate.connection.url=jdbc:cloudspanner:/projects/YOUR-PROJECT/instances/YOUR-INSTANCE/databases/YOUR-DATABASE

כדי לבצע אימות ב-Spanner, מנהל ההתקן של JDBC דורש פרטי כניסה. מגדירים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS לנתיב של קובץ ה-JSON של פרטי הכניסה של חשבון השירות. אחרת, מנהל ההתקן משתמש בפרטי הכניסה שמוגדרים כברירת מחדל באפליקציית gcloud של Google Cloud CLI.

שימוש בניב Spanner בקוד פתוח

בפרויקטים שבהם נעשה שימוש בגרסאות קודמות של Hibernate (גרסה 6.x או 7.x לפני 7.4), או אם אתם צריכים תכונות ואופטימיזציות שעדיין לא נתמכות על ידי הניב המובנה, אתם יכולים להשתמש בניב Spanner בקוד פתוח.

כדי להשתמש בניב קוד פתוח, מוסיפים את יחסי התלות של Maven לקובץ pom.xml של הפרויקט:

<dependencies>
  <!-- The Spanner JDBC driver dependency -->
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-jdbc</artifactId>
  </dependency>

  <!-- Hibernate core dependency -->
  <dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>6.4.4.Final</version>
  </dependency>
</dependencies>

מגדירים את קובץ hibernate.properties של הפרויקט כך שישתמש ב-Spanner Dialect וב-JDBC Driver בקוד פתוח:

hibernate.dialect=com.google.cloud.spanner.hibernate.SpannerDialect
hibernate.connection.driver_class=com.google.cloud.spanner.jdbc.JdbcDriver
hibernate.connection.url=jdbc:cloudspanner:/projects/YOUR-PROJECT/instances/YOUR-INSTANCE/databases/YOUR-DATABASE

מידע נוסף על התכונות וההמלצות של Hibernate כשמשתמשים בניב הזה זמין במסמכי העיון ב-GitHub.

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