Hibernate הוא כלי למיפוי יחסי בין אובייקטים בשפת התכנות Java. הוא מספק מסגרת למיפוי של מודל דומיין מונחה-עצמים למסד נתונים רלציוני.
אפשר לשלב מסדי נתונים של ניב GoogleSQL עם Hibernate. Spanner תואם ל-Hibernate ORM 6.x ו-7.x. ל-Hibernate ORM יש ניב Spanner מובנה, ויש גם ניב Hibernate ש-Google מתחזקת וזמין ב-GitHub. שני הניבים יוצרים הצהרות 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.
הדיאלקט המובנה תומך בתכונות סטנדרטיות של Hibernate. אם האפליקציה שלכם דורשת תכונות מתקדמות שספציפיות ל-Spanner, מומלץ להשתמש במקום זאת בניב חיצוני שמתוחזק על ידי Google.
כדי להשתמש בניב המובנה, מוסיפים את יחסי התלות של 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 שתחזוקתו מתבצעת על ידי Google
בפרויקטים שבהם נעשה שימוש בגרסאות קודמות של Hibernate (גרסה 6.x או גרסה 7.x לפני גרסה 7.4), או אם אתם צריכים תכונות מתקדמות שספציפיות ל-Spanner ושעדיין לא נתמכות על ידי הניב המובנה, אתם יכולים להשתמש בניב Spanner שמתוחזק על ידי Google.
התכונות המתקדמות שנתמכות בניב שמתחזקת Google כוללות:
- היררכיות של טבלאות משולבות (
@Interleaved) - רמזים לשאילתות, לאינדקס ולסריקה
- קיבוץ של סכימות DDL
- תיוג עסקאות (
@TransactionTag) - רצפים משולבים (
@PooledBitReversedSequenceGenerator)
כדי להשתמש בניב שתחזוקתו מתבצעת על ידי Google, מוסיפים את יחסי התלות של Maven לקובץ pom.xml של הפרויקט:
מגדירים את קובץ hibernate.properties של הפרויקט כך שישתמש ב-Spanner Dialect וב-JDBC Driver שתחזוקתם מתבצעת על ידי Google:
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.
המאמרים הבאים
- דוגמאות לקוד של קופה באמצעות Hibernate עם Spanner.
- כדאי לנסות את ה-codelab בנושא Spanner עם Hibernate ORM.
- מידע נוסף על Hibernate ORM
- אפשר לראות את המאגר של Spanner Dialect ב-GitHub.
- מגישים בעיה ב-GitHub כדי לדווח על באג או לשאול שאלה על Hibernate.
- מידע נוסף על Apache Maven
- מידע נוסף על שילוב של Spanner עם Hibernate ORM (ניב PostgreSQL)