روش Mapped Superclass در هایبرنت با استفاده از انوتیشن چگونه انجام می شود؟
- فرشته حقیقی 5 سال قبل سوال کرد
- آخرین ویرایش 5 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید
در این روش یک کلاس پدر و تعدادی زیرکلاس داریم اما کلاس پدر entity نخواهد بود یعنی به ازای کلاس پدر جدولی در دیتابیس نخواهیم داشت.این روش برای به اشتراک گذاشتن فیلدها مناسب است و از تعریف مجدد فیلدهای تکراری جلوگیری می شود. برای انجام کوئری روی جداول نیازی به join جداول نداریم و از این نظر این یک مزیت می باشد چون نیازی به کوئری های پیچیده نمی باشد.
نقطه ضعف این روش این است که ارتباطی بین جداول وجود ندارد و همچنین نمی توانیم با کوئری تمام زیرکلاسهای پدر را استخراج کنیم.
برای مشخص کردن کلاس پدر از انوتیشن MappedSuperclass@ استفاده می کنیم.
@MappedSuperclass
public class Person {
@Id
@Column
private long personId;
@Column
private String name;
// constructor, getters, setters
}
در نظر داشته باشید برای کلاس پدر انوتیشن Entity@ بکار نمی بریم.
برای تعریف یک زیرکلاس به صورت زیر عمل می کنیم:
@Entity
public class MyEmployee extends Person {
@Column
private String company;
// constructor, getters, setters
}
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین ویرایش 5 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید