پاسخ داده شد
پیاده سازی روش single class در هایبرنت با استفاده از چگونه است؟
hibernate hibernate Hibernate Inheritance Mapping Hibernate Inheritance Strategy hiberrnate in spring spring
- فرشته حقیقی 2 سال قبل سوال کرد
- آخرین ویرایش 2 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید
پاسخ عالی
در این روش برای همه ی زیرکلاسها و همچنین کلاس پدر فقط یک جدول ایجاد می شود.مزیت این روش این است که کوئری ها ساده و بهینه خواهند بود اما عیب آن این است که مقادیر بعضی ستونها null خواهد بود.انوتیشن این روش بسیار ساده می باشد که عبارتند از Inheritance(strategy=InheritanceType.SINGLE_TABLE@ و برای اینکه مشخص کنیم که هر رکورد متعلق به چه entity است از انوتیشن های DiscriminatorColumn @DiscriminatorValue@ استفاده می کنیم
فرض کنیم یک کلاس کارمند و دو زیرکلاس کارمندقراردادی و کارمند رسمی داریم.کلاس کارمند که کلاس پدر می باشد بصورت زیر تعریف می شود:
@Entity
@Table(name = "EMPLOYEE")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue(value="employee")
public class Employee {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
//setters and getters
}
زیرکلاسها نیز بصورت زیر تعریف می شوند:
Entity
@DiscriminatorValue("regularemployee")
public class Regular_Employee extends Employee{
@Column(name="salary")
private float salary;
@Column(name="bonus")
private int bonus;
//setters and getters
}
@Entity
@DiscriminatorValue("contractemployee")
public class Contract_Employee extends Employee{
@Column(name="pay_per_hour")
private float pay_per_hour;
@Column(name="contract_duration")
private String contract_duration;
//setters and getters
}
- فرشته حقیقی 2 سال قبل پاسخ داد
- آخرین ویرایش 2 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید
پاسخ شما