تفاوت روش های Table Per Class و Joined در نگاشت وراثت در JPA چیست؟

0 رأی
میانگین بازدید روزانه 0.12124 بازدید

هر دو روش Table Per Class و Joined در نگاشت وراثت در JPA از یک جدول مشترک بین کلاس های فرزند و ارتباط با استفاده از کلید خارجی (FK) استفاده می کنند، تفاوت اصلی این دو روش چیست؟

سوال 2 سال قبل در تالار برنامه نویسی توسط Saeed Zarinfam (346 امتیاز)

2 جواب

0 رأی
 
بهترین جواب

در روش Joined برای هر کلاس یک جدول تعریف می شود و در هر جدول فقط ستون هایی که درکلاس آنها قرار دارد تعریف می شود و ستون های پدر در جدول مربوط به پدر تعریف می شود و fk جدول پدر در جدول فرزند قرار می گیرد، مزیت اصلی روش Joined این است که اطلاعات اضافی (redundant) ذخیره نمی شود و همچنین پایگاه داده در حالت نرمال (normalize) قرار دارد ولی مشکلی که ایجاد می شود این است که برای بازیابی کلاس های فرزند نیاز به join زدن است و این باعث کند شدن این روش می شود و همچنین برای ذخیره سازی کلاس های فرزند نیز نیاز به اجرای چند INSERT یا UPDATE است.

در روش Table Per Class نیز همانند روش Joined برای هر کلاس یک جدول تعریف می شود ولی بر خلاف روش Joined تمام ستون های خود کلاس ها و همچنین کلاس های پدر آن کلاس در هر جدول تعریف می شود. مزیت این روش این است که برای بازیابی اطلاعات نیازی به join نیست و همچنین در زمان اضافه شدن کلاس جدیدی به سلسله مراتب کلاس نیازی به جداول فعلی نیست (بر خلاف روش Joined) اما عیب اصلی این روش علاوه بر ذخیره اطلاعات اضافی (redundant) این است که محدودیت هایی در زمینه Polymorphic برای کلاس های غیر برگ (non-leaf) وجود دارد.

جواب 2 سال قبل توسط Saeed Zarinfam (346 امتیاز)
انتخاب شده در 1 سال قبل توسط Saeed Zarinfam
+1 رأی
سلام

روش Table Per Class باعث ایجاد داده های تکراری می شود ولی روش Joined این مشکل و مشکل single table که باعث ایجاد فضای خالی و پرت می شود  را حل کرده است.
جواب 2 سال قبل توسط gh.abdoli (55 امتیاز)
تشکر. شما فقط درباره مزیت روش Joined گفتید.

سوال های مشابه

0 رأی
1 جواب میانگین بازدید روزانه 0.0881 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.16159 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط Saeed Zarinfam (346 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.5554 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.52106 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.1753 بازدید
سوال 9 ماه قبل در تالار برنامه نویسی توسط Saeed Zarinfam (346 امتیاز)
+1 رأی
2 جواب میانگین بازدید روزانه 0.32173 بازدید
سوال 1 سال قبل در تالار برنامه نویسی توسط java_ (689 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.0424 بازدید
سوال 1 سال قبل در تالار برنامه نویسی توسط Saeed Zarinfam (346 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.18102 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.0650 بازدید
سوال 2 سال قبل در تالار برنامه نویسی توسط Saeed Zarinfam (346 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.0654 بازدید
کانال تلگرام جواب یاب
...