מודול 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, אפשר להשיג רכיב bean מסוג SpannerTemplate, שמטמיע את SpannerOperations. SpannerTemplate
כולל שיטות להרצת שאילתות SQL ולשינוי נתונים באמצעות הצהרות של שפת טיפול בנתונים (DML). אפשר גם להשתמש ב-bean הזה כדי לגשת אל read API ו-mutation API של Spanner.
בנוסף, אפשר להרחיב את הממשק SpannerRepository כדי להצפין את כל הלוגיקה של האפליקציה שמבצעת שאילתות ומשנה נתונים ב-Spanner.
בקטעים הבאים מוסבר איך לעבוד עם SpannerTemplate ועם SpannerRepository.
קבלת רכיב bean של תבנית
משתמשים בהערה @Autowired כדי לקבל אוטומטית רכיב SpannerTemplate. אחרי זה תוכלו להשתמש בSpannerTemplate בכל הכיתה.
בדוגמה הבאה מוצגת מחלקה שמקבלת את ה-bean ומשתמשת בו:
אפשר להשתמש ב-SpannerTemplate bean כדי להפעיל עסקאות לקריאה בלבד ועסקאות לקריאה וכתיבה. בנוסף, אפשר להשתמש בהערה @Transactional כדי ליצור טרנזקציות הצהרתיות.
קבלת רכיב Repository Bean
אם אתם משתמשים ב-SpannerRepository, אתם יכולים להשתמש בהערה @Autowired כדי לקבל רכיב bean שמטמיע את הממשק של המאגר. מאגר כולל שיטות להפעלת פונקציות Java כטרנזקציות לקריאה בלבד וטרנזקציות לקריאה וכתיבה. לפעולות ברמה נמוכה יותר, אפשר לקבל את תבנית ה-bean שמאגר הנתונים משתמש בה.
בדוגמאות הבאות מוצג הממשק של מאגר ושל מחלקה שמקבלת את ה-bean ומשתמשת בו:
ניהול Spanner
כדי לקבל מידע על מסדי הנתונים של Spanner, לעדכן סכימה באמצעות הצהרה של Data Definition Language (DDL) או לבצע משימות ניהול אחרות, אפשר להשיג רכיב SpannerDatabaseAdminTemplate.
משתמשים בהערה @Autowired כדי לקבל את ה-bean באופן אוטומטי. לאחר מכן תוכלו להשתמש בSpannerDatabaseAdminTemplate בכיתה.
בדוגמה הבאה מוצגת מחלקה שמקבלת את ה-bean ומשתמשת בו:
המאמרים הבאים
- תחילת העבודה עם Spring Cloud GCP.
- מידע נוסף על השימוש ב-Spring Data Spanner באפליקציות
- פתיחת בקשה בקשר לבעיה ב-GitHub כדי לדווח על באג או לשאול שאלה לגבי המודול.
- מידע נוסף על תמיכה ב-Spring Framework ב- Google Cloud
- אפשר לנסות שיעור Codelab כדי לפרוס ולהריץ אפליקציה שמשתמשת ב-Spring Cloud GCP.