מבוא ל- Data Data JDBC

1. סקירה כללית

Spring Data JDBC היא מסגרת התמדה שאינה מורכבת כמו Spring Data JPA. הוא אינו מספק מטמון, טעינה עצלה, כתיבה מאוחרת או תכונות רבות אחרות של JPA. עם זאת, יש לה ORM משלה ומספק את מרבית התכונות בהן אנו משתמשים עם Spring Data JPA כמו ישויות ממופות, מאגרים, הערות שאילתות ו- JdbcTemplate.

דבר חשוב לזכור הוא Spring Data JDBC אינו מציע יצירת סכמות. כתוצאה מכך, אנו אחראים ליצירת הסכימה במפורש.

2. הוספת נתוני אביב JDBC לפרויקט

Spring Data JDBC זמין ליישומי Spring Boot עם מתנע התלות של JDBC. מתנע תלות זה אינו מביא את מנהל ההתקן של מסד הנתונים. החלטה זו חייבת להתקבל על ידי היזם. בואו נוסיף את המתנע לתלות ב- Spring Data JPA:

 org.springframework.boot spring-boot-starter-data-jdbc 

בדוגמה זו אנו משתמשים במסד הנתונים H2. כפי שהזכרנו מוקדם, Spring Data JDBC אינו מציע יצירת סכמות. במקרה כזה, אנו יכולים ליצור מותאם אישית schema.sql קובץ המכיל את פקודות SQL DDL ליצירת אובייקטים של הסכימה. באופן אוטומטי, Spring Boot יבחר את הקובץ הזה וישתמש בו ליצירת אובייקטים של מסד נתונים.

3. הוספת ישויות

כמו בפרויקטים אחרים של Spring Data, אנו משתמשים בהערות כדי למפות POJOs עם טבלאות מסדי נתונים. ב Spring Data JDBC, הישות חייבת להיות בעל @תְעוּדַת זֶהוּת. Spring Data JDBC משתמש ב- @תְעוּדַת זֶהוּת ביאור לזיהוי ישויות.

בדומה ל- Spring Data JPA, Spring Data JDBC משתמש כברירת מחדל באסטרטגיית שמות הממפה את ישויות Java לטבלאות מסדי נתונים יחסיים, ותכונות לשמות עמודות. כברירת מחדל, שמות מקרה הגמלים של ישויות ותכונות ממופים לשמות מקרה של טבלאות ועמודות בהתאמה. לדוגמא, ישות ג'אווה בשם פנקס הכתובות ממופה לטבלת מסד נתונים בשם פנקס הכתובות.

כמו כן, אנו יכולים למפות ישויות ותכונות עם טבלאות ועמודות במפורש באמצעות ה- @שולחן ו @טור ביאורים. לדוגמא, להלן הגדרנו את היישות בה נשתמש בדוגמה זו:

אדם ממעמד ציבורי {@ Id מזהה פרטי ארוך; פרטי מחרוזת firstName; שם משפחה פרטי מחרוזת; // בונים, גטרים, סטרים}

איננו צריכים להשתמש בהערה @שולחן אוֹ @טור בתוך ה אדם מעמד. אסטרטגיית השמות המוגדרת כברירת מחדל של Spring Data JDBC עושה את כל המיפויים באופן מרומז בין הישות לטבלה.

4. הצהרת מאגרי JDBC

Spring Data JDBC משתמש בתחביר הדומה ל- Spring Data JPA. אנו יכולים ליצור מאגר JDBC של Spring Data על ידי הרחבת ה- מאגר, CrudRepository, או PagingAndSortingRepository מִמְשָׁק. על ידי יישום מאגר Crud, אנו מקבלים יישום של השיטות הנפוצות ביותר כמו לשמור, לִמְחוֹק, ו findById, בין היתר.

בואו ניצור מאגר JDBC בו נשתמש בדוגמה שלנו:

ממשק ציבורי @ מאגר @ PersonRepository מרחיב את CrudRepository {}

אם עלינו לקבל תכונות עימוד ומיון, הבחירה הטובה ביותר תהיה הרחבת ה- PagingAndSortingRepository מִמְשָׁק.

5. התאמה אישית של מאגרי JDBC

למרות מאגר Crud שיטות מובנות, עלינו ליצור את השיטות שלנו למקרים ספציפיים. דבר חשוב לציין הוא ש- Spring Data JDBC אינו תומך בשאילתות נגזרות. זה אומר שאנחנו לא יכולים רק לכתוב את שם השיטה ולצפות ש- Spring Data JDBC מייצר את השאילתה.

בכל פעם שאנחנו כותבים שיטה מותאמת אישית, עלינו לקשט אותה עם ה- @שאילתא ביאור. בתוך ה @שאילתא ביאור, אנו מוסיפים את פקודת ה- SQL שלנו. ב- Spring Data JDBC אנו כותבים שאילתות ב- SQL רגיל. איננו משתמשים בשפת שאילתות ברמה גבוהה יותר כמו JPQL. כתוצאה מכך, היישום משתלב היטב עם ספק מסד הנתונים.

מסיבה זו, קשה יותר גם לעבור למסד נתונים אחר.

הבדל חשוב נוסף הוא זה Spring Data JDBC אינו תומך בהפניה של פרמטרים עם מספרי אינדקס. בגרסה זו של Spring Data JDBC, אנו יכולים להפנות רק לפרמטרים לפי שם.

עם ה @ שינוי ביאור, אנו יכולים להעלות הערות על שיטות שאילתה המשנות את הישות.

עכשיו בואו נתאים אישית את שלנו מאגר אישי עם שאילתה שאינה משתנה ושאילתת שינוי:

ממשק ציבורי @ מאגר PersonRepository מרחיב את CrudRepository {@Query ("בחר * מהאדם שבו first_name =: firstName") רשימה findByFirstName (@Param ("firstname") שם מחרוזת); @Modifying @Query ("UPDATE person SET First_name =: name WHERE id =: id") בוליאני updateByFirstName (@Param ("id") מזהה ארוך, @Param ("שם") שם מחרוזת); }

6. אכלוס מסד הנתונים

לבסוף, עלינו לאכלס את מסד הנתונים בנתונים שישמשו לבדיקת מאגר ה- Spring Data JDBC שיצרנו לעיל. לכן, אנו ניצור זורע מסדי נתונים שיכניס נתוני דמה. בואו נוסיף את היישום של זריד מסד הנתונים לדוגמא זו:

@Component Public Class DatabaseSeeder {@ JadbcTemplate פרטי פרטי מאושר jdbcTemplate; בטל פומבי insertData () {jdbcTemplate.execute ("הכנס לאדם (שם ראשון, שם משפחה) ערכים ('ויקטור', 'הוגו')"); jdbcTemplate.execute ("INSERT INTO Person (first_name, last_name) VALUES ('Dante', 'Alighieri')"); jdbcTemplate.execute ("INSERT INTO Person (first_name, last_name) VALUES ('Stefan', 'Zweig')"); jdbcTemplate.execute ("הכנס לאדם (שם פרטי, שם משפחה) VALUES ('אוסקר', 'ווילד')"); }}

כפי שנראה לעיל, אנו משתמשים ב- Spring JDBC לצורך ביצוע ה- לְהַכנִיס הצהרות. בפרט, Spring JDBC מטפל בחיבור למסד הנתונים ומאפשר לנו לבצע פקודות SQL באמצעות JdbcTemplateס. פתרון זה הוא גמיש מאוד מכיוון שיש לנו שליטה מלאה בשאילתות שבוצעו.

7. מסקנה

לסיכום, Spring Data JDBC מציע פיתרון פשוט כמו שימוש ב- Spring JDBC - אין שום קסם שמאחוריו. עם זאת, הוא מציע גם רוב התכונות שאנחנו רגילים להשתמש ב- Spring Data JPA.

אחד היתרונות הגדולים ביותר של Spring Data JDBC הוא ביצועים משופרים בעת גישה לבסיס הנתונים בהשוואה ל- Spring Data JPA. הסיבה לכך היא JDBC של Spring Data מתקשר ישירות למסד הנתונים. Spring Data JDBC אינו מכיל את רוב הקסם של Spring Data בעת שאילתת מסד הנתונים.

אחד החסרונות הגדולים ביותר בשימוש ב- Spring Data JDBC הוא התלות בספק מסד הנתונים. אם נחליט לשנות את מסד הנתונים מ- MySQL ל- Oracle, ייתכן שנצטרך להתמודד עם בעיות הנובעות ממאגרי מידע בעלי ניבים שונים.

ניתן למצוא את היישום של מדריך ה- Spring Data JDBC באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found