ההבדל בין @JoinColumn ו- mappedBy

1. הקדמה

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

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

לקשר דו כיווני אנו בדרך כלל מגדירים:

  • הצד שבבעלות
  • הפוך או הצד המפנה

ה @JoinColumn ביאור עוזר לנו לציין את העמודה בה נשתמש להצטרפות לאסוציאציה של ישויות או לאוסף אלמנטים. מצד שני, ה ממופה על ידי התכונה משמשת להגדרת הצד המפנה (הצד שאינו בבעלות) של היחסים.

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

2. הגדרה ראשונית

להמשך הדרכה זו, נניח שיש לנו שתי ישויות: עוֹבֵד ו אימייל.

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

המשמעות היא שהם חולקים עמותה אחת לרבים:

גם במודל RDBMS שלנו, יהיה לנו מפתח זר תג עובד בשלנו אימייל ישות המתייחסת ל תְעוּדַת זֶהוּת תכונה של עוֹבֵד.

3. @JoinColumn ביאור

במערכת יחסים של אחד לרבים / רבים לאחד, הצד שבבעלות מוגדר בדרך כלל ב"רב' הצד של היחסים. זה בדרך כלל הצד שבבעלותו המפתח הזר.

ה @JoinColumn ביאור מגדיר מיפוי פיזי ממשי בצד הבעלים:

@Entity class class דוא"ל {@Id @GeneratedValue (אסטרטגיה = GenerationType.AUTO) פרטי מזהה ארוך; @ManyToOne (fetch = FetchType.LAZY) @JoinColumn (name = "עובד_איד") עובד שכיר פרטי; // ...}

זה פשוט אומר שלנו אימייל לישות תהיה שם עמודת מפתח זר תג עובד הכוונה לתכונה הראשית תְעוּדַת זֶהוּת שלנו עוֹבֵד יֵשׁוּת.

4. ממופה על ידי תְכוּנָה

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

אנחנו יכולים להשתמש בקלות ב- ממופה על ידי תכונה של @אחד לרבים ביאור לעשות זאת. אז בואו נגדיר את שלנו עוֹבֵד יֵשׁוּת:

עובד בכיתה ציבורית @Entity {@Id @GeneratedValue (אסטרטגיה = GenerationType.AUTO) פרטי מזהה ארוך; @OneToMany (fetch = FetchType.LAZY, mappedBy = "עובד") הודעות דוא"ל ברשימה פרטית; // ...}

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

5. מסקנה

במדריך זה בדקנו את ההבדל בין @JoinColumn ו ממופה על ידי וכיצד להשתמש בהם במערכת יחסים דו כיוונית אחת לרבים.

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

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


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