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

0 رأی

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

سوال 2 سال قبل در تالار کامپیوتر و اینترنت توسط Saeed Zarinfam (64 امتیاز) 34% درصد پذیرش

2 جواب

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

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

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

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

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

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

+1 رأی
1 جواب 155 بازدید
+1 رأی
1 جواب 79 بازدید
0 رأی
0 جواب 42 بازدید
0 رأی
1 جواب 86 بازدید
سوال 1 سال قبل در تالار کامپیوتر و اینترنت توسط java_ (669 امتیاز)
0 رأی
1 جواب 22 بازدید
0 رأی
1 جواب 93 بازدید
0 رأی
1 جواب 49 بازدید
0 رأی
1 جواب 51 بازدید
...