0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

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

2 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

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

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

+1 امتیاز
قبل توسط (60 امتیاز)
سلام

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

سوالات مشابه

0 امتیاز
1 پاسخ 395 بازدید
+1 امتیاز
1 پاسخ 500 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+1 امتیاز
1 پاسخ 886 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 287 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
3 پاسخ 681 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
0 پاسخ 925 بازدید
0 امتیاز
0 پاسخ 825 بازدید
+1 امتیاز
1 پاسخ 616 بازدید
0 امتیاز
1 پاسخ 351 بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+1 امتیاز
2 پاسخ 789 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط java_ (778 امتیاز)
...