אביב JPA @ Embedded ו- @ EmbeddedId

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

במדריך זה, אנו הולכים לכסות את השימוש ב- @ EmbeddedId ביאור ו- “findBy"שיטת שאילתת ישות JPA מבוססת מפתח מורכב.

לָכֵן נשתמש @ EmbeddeId ו @ ניתן להטמעה ביאורים לייצוג מפתחות מרוכבים בישויות JPA. אנחנו צריכים גם להשתמש באביב מאגר Jpa כדי להשיג את המטרה שלנו.

אנו נתרכז בשאילתת אובייקטים לפי מפתח ראשי חלקי.

2. צורך @ ניתן להטמיעה ו @ EmbeddedId

בתוכנה אנו נתקלים במקרי שימוש רבים בהם עלינו להחזיק מפתח ראשי מורכב כדי להגדיר ערך בטבלה. מפתחות עיקריים מורכבים הם מקשים המשתמשים ביותר מעמודה אחת כדי לזהות שורה בטבלה באופן ייחודי.

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

3. דוגמא

שקול א סֵפֶר שולחן, שבו א סֵפֶר לרשומה יש מפתח ראשי מורכב המורכב מ- מְחַבֵּר ו שֵׁם. לפעמים, אולי נרצה למצוא ספרים על ידי חלק מהמפתח הראשי. לדוגמה, משתמש עשוי לרצות לחפש ספרים רק על ידי אדם מסוים מְחַבֵּר. נלמד כיצד לעשות זאת עם JPA.

היישום העיקרי שלנו יורכב מ- @ BookId ניתן להטמעה ו ספר @Entity עם @ EmbeddedId BookId.

3.1. @ ניתן להטמיעה

בואו נגדיר את שלנו BookId בכיתה בסעיף זה. ה מְחַבֵּר ו שֵׁם יפרט ייחודי BookId - הכיתה היא ניתן לבצע סדרתי ומיישם את שניהם שווים ו hashCode שיטות:

@ Embeddable class class BookId מיישמת Serializable {פרטי מחרוזת מחרוזת; שם מחרוזת פרטי; // סטרים וקובעים סטנדרטיים}

3.2. @יֵשׁוּת ו @ EmbeddedId

שֶׁלָנוּ סֵפֶר ישות יש @ EmbeddedIdBookId ותחומים אחרים הקשורים לא סֵפֶר. BookId אומר ל- JPA כי סֵפֶר ישות יש מפתח מורכב:

@Entity בכיתה ציבורית ספר {@EmbeddedId פרטי מזהה BookId; ז'אנר מיתרים פרטי; מחיר שלם פרטי; // סטרים וקובעים סטנדרטיים}

3.3. מאגר JPA ושמות מתן שיטות

בואו נגדיר במהירות את ממשק המאגר JPA שלנו על ידי הרחבת ה- מאגר Jpa עם ישות סֵפֶר בנוסף ל BookId:

ממשק ציבורי @ מאגר @ BookRepository מרחיב את JpaRepository {List findByIdName (שם מחרוזת); רשימה findByIdAuthor (מחבר מחרוזת); }

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

findByIdName -> הנחיה "findBy" שדה "id.name" findByIdAuthor -> הנחיה "findBy" שדה "id.author"

4. מסקנה

ניתן להשתמש ב- JPA כדי למפות ביעילות מקשים מורכבים ולשאול אותם באמצעות שאילתות נגזרות.

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

לבסוף ראינו כיצד להשתמש ב מאגר JpafindBy שיטות נגזרות לחיפוש עם שדות מזהה חלקיים.

כמו תמיד, קוד הדוגמה למדריך זה זמין ב- GitHub.


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