מודול Spring Data Spanner עוזר לכם להשתמש ב-Spanner בכל אפליקציית Java שמבוססת על Spring Framework.
בדומה לכל המודולים של Spring Data, Spring Data Spanner מספק מודל תכנות מבוסס-Spring ששומר על עקביות ועל יכולת ההתאמה של Spanner. התכונות שלו דומות ל-Spring Data JPA ול-Hibernate ORM, עם הערות שנועדו ל-Spanner. מידע נוסף על השימוש ב-Spring Data JPA עם Spanner זמין במאמר שילוב של Spanner עם Spring Data JPA (ניב GoogleSQL).
אם אתם כבר מכירים את Spring, Spring Data Spanner יכול להקל עליכם לעבוד עם Spanner באפליקציה שלכם ולצמצם את כמות הקוד שאתם צריכים לכתוב.
בדף הזה מוסבר איך להוסיף את Spring Data Spanner לאפליקציית Java. מידע מפורט על המודול זמין במאמר בנושא Spring Data Spanner.
התקנת המודול
אם משתמשים ב-Maven, צריך להוסיף את Spring Cloud GCP Bill of Materials (BOM) ואת Spring Data Spanner לקובץ pom.xml. התלויות האלה מספקות את רכיבי Spring Data Spanner ל-Spring ApplicationContext:
צריך גם ליצור חשבון שירות ולהשתמש במפתח של חשבון השירות כדי לבצע אימות באמצעות Google Cloud.
מידע נוסף זמין בהוראות בנושא הגדרת סביבת פיתוח בשפת Java. לא צריך להתקין את Google Cloud ספריית הלקוח ל-Java, כי Spring Boot starter מתקין את ספריית הלקוח באופן אוטומטי.
הגדרת המודול
בקטע הזה מתוארות כמה מהגדרות התצורה הנפוצות ביותר של Spring Data Spanner. רשימה מלאה של ההגדרות מופיעה במאמרי העזרה.
מציינים מופע ומסד נתונים
כדי לציין את ברירת המחדל של המופע ומסד הנתונים, מגדירים את מאפייני התצורה הבאים לאפליקציה:
| מאפיין (property) | תיאור |
|---|---|
spring.cloud.gcp.spanner.project-id |
זה שינוי אופציונלי. מזהה הפרויקט Google Cloud . הפונקציה מחליפה את הערך של spring.cloud.gcp.config.project-id. |
spring.cloud.gcp.spanner.instance-id |
מזהה מכונת Spanner. |
spring.cloud.gcp.spanner.database |
מסד הנתונים שאליו רוצים להתחבר. |
מודל נתונים של Spanner
בעזרת Spring Data Spanner, אפשר להשתמש באובייקטים פשוטים של Java (POJO) כדי ליצור מודל של הנתונים שמאוחסנים בטבלאות Spanner.
לכל טבלה במסד הנתונים, צריך להצהיר על ישות שמייצגת רשומה בטבלה הזו. אפשר להשתמש בהערות כדי למפות את הישות והמאפיינים שלה לטבלה ולעמודות שלה.
אפשר להשתמש בהערות הבאות כדי ליצור מודל של קשרים פשוטים בין ישויות לבין טבלאות:
| הערות לגבי ישויות | |
|---|---|
@Column(name = "columnName")
|
זה שינוי אופציונלי. המאפיין ממופה לעמודה ספציפית בטבלת Spanner, ומוגדרת בו דריסת שיטת מתן השמות שממפה את השמות באופן אוטומטי.
אם לא מציינים את המאפיין הזה, אסטרטגיית ברירת המחדל למתן שמות ב-Spring Data Spanner ממפה שמות של מאפייני Java |
@Embedded |
מציין שהמאפיין הוא אובייקט מוטמע שיכול להכיל רכיבים של מפתח ראשי. אם המאפיין משמש בפועל כמפתח הראשי, צריך לכלול גם את ההערה |
|
|
השדה הזה מציין שנכס מסוים מכיל רשימה של שורות שמשולבות בשורה הנוכחית.
כברירת מחדל, Spring Data Spanner מאחזר את השורות המשלבות בזמן יצירת המופע. כדי לאחזר את השורות באופן עצלני כשניגשים למאפיין, משתמשים ב-
דוגמה: אם לישות |
@NotMapped |
מציין שמאפיין לא נשמר במסד הנתונים וצריך להתעלם ממנו. |
|
|
מציין שהמאפיין הוא רכיב של המפתח הראשי, ומזהה את המיקום של המאפיין במפתח הראשי, החל מ-1. ערך ברירת המחדל
לדוגמה: |
@Table(name = "TABLE_NAME") |
הטבלה שהישות מבוססת עליה. כל מופע של הישות
מייצג רשומה בטבלה. מחליפים את
לדוגמה: |
אם אתם צריכים ליצור מודלים של קשרים מורכבים יותר, תוכלו לעיין בהפניה ל-Spring Data Spanner כדי לקבל פרטים על הערות אחרות שהמודול תומך בהן.
בדוגמאות הבאות מוצגת דרך אחת ליצור מודל של הטבלאות Singers ו-Albums עבור Spring Data Spanner:
- בדוגמה של ישויות
Singer, יש מאפייןalbumsעם הערה@Interleaved. המאפיין הזה מכיל רשימה של אלבומים שמשולבים עם הישותSinger. המאפיין הזה מאוכלס באופן אוטומטי על ידי Spring Data Spanner. - בדוגמה של ישויות
Album, יש מאפייןrelatedAlbumsשלא מאוחסן ב-Spanner.
שאילתה ושינוי של נתונים
כדי לשלוח שאילתות לנתונים ולשנות אותם באמצעות Spring Data Spanner, אפשר להשיג רכיב מסוג SpannerTemplate, שמטמיע את SpannerOperations. SpannerTemplate
מספק שיטות לביצוע שאילתות SQL ולשינוי נתונים באמצעות הצהרות של שפת טיפול בנתונים (DML). אפשר גם להשתמש ב-bean הזה כדי לגשת אל read API ו-mutation API של Spanner.
בנוסף, אפשר להרחיב את הממשק SpannerRepository כדי להצפין את כל הלוגיקה של האפליקציה שמבצעת שאילתות ומשנה נתונים ב-Spanner.
בקטעים הבאים מוסבר איך לעבוד עם SpannerTemplate ועם SpannerRepository.
קבלת רכיב template bean
משתמשים בהערה @Autowired כדי לקבל אוטומטית רכיב SpannerTemplate. אחרי זה תוכלו להשתמש בSpannerTemplate בכל הכיתה.
בדוגמה הבאה מוצגת מחלקה שמקבלת את ה-bean ומשתמשת בו:
אפשר להשתמש ב-SpannerTemplate bean כדי להפעיל עסקאות לקריאה בלבד ועסקאות לקריאה ולכתיבה. בנוסף, אפשר להשתמש בהערה @Transactional כדי ליצור טרנזקציות הצהרתיות.
קבלת רכיב Repository Bean
אם משתמשים ב-SpannerRepository, אפשר להשתמש בהערה @Autowired כדי לקבל רכיב bean שמטמיע את הממשק של המאגר. מאגר
כולל שיטות להפעלת פונקציות Java כטרנזקציות לקריאה בלבד וטרנזקציות לקריאה וכתיבה. לפעולות ברמה נמוכה יותר, אפשר לקבל את רכיב ה-bean של התבנית שמאגר הנתונים משתמש בו.
בדוגמאות הבאות מוצג הממשק של מאגר ושל מחלקה שמקבלת את ה-bean ומשתמשת בו:
ניהול Spanner
כדי לקבל מידע על מסדי נתונים ב-Spanner, לעדכן סכימה באמצעות הצהרה של שפת הגדרת נתונים (DDL) או לבצע משימות ניהול אחרות, אפשר להשיג רכיב SpannerDatabaseAdminTemplate.
משתמשים בהערה @Autowired כדי לקבל את ה-bean באופן אוטומטי. אחרי זה תוכלו להשתמש בSpannerDatabaseAdminTemplate בכל הכיתה.
בדוגמה הבאה מוצגת מחלקה שמקבלת את ה-bean ומשתמשת בו:
המאמרים הבאים
- תחילת העבודה עם Spring Cloud GCP.
- מידע נוסף על השימוש ב-Spring Data Spanner באפליקציות
- פתיחת בקשות בקשר לבעיות ב-GitHub כדי לדווח על באג או לשאול שאלה לגבי המודול.
- מידע נוסף על תמיכה ב-Spring Framework ב- Google Cloud
- אפשר לנסות codelab כדי לפרוס ולהריץ אפליקציה שמשתמשת ב-Spring Cloud GCP.