מודול 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 |
מציין שהמאפיין הוא אובייקט מוטמע שיכול להכיל רכיבים של מפתח ראשי. אם הנכס משמש בפועל כמפתח הראשי, צריך לכלול גם את ההערה |
|
|
המאפיין מציין שנכס מכיל רשימה של שורות שהן interleaved עם השורה הנוכחית.
כברירת מחדל, 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 bean, שמטמיע את 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 ומשתמשת בו:
ניהול 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.