InterviewSolution
| 1. |
Can you tell something about Table Per Class Strategy. |
|
Answer» Table Per Class Strategy is another type of inheritance mapping strategy where each class in the hierarchy has a corresponding mapping database table. For example, the InterviewBitContractEmployee class details are stored in the interviewbit_contract_employee table and InterviewBitPermanentEmployee class details are stored in interviewbit_permanent_employee tables respectively. As the data is stored in different tables, there will be no need for a discriminator column as done in a single table strategy. Hibernate provides @Inheritance annotation which takes strategy as the parameter. This is used for defining what strategy we would be USING. By giving them value, InheritanceType.TABLE_PER_CLASS, it signifies that we are using a table per class strategy for mapping. The code snippet will be as shown below: InterviewBitEmployee class: @Entity(name = "interviewbit_employee")@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)@NoArgsConstructor@AllArgsConstructorpublic class InterviewBitEmployee { @Id @Column(name = "employee_id") private String employeeId; private String fullName; private String email;}InterviewBitContractEmployee class: @Entity(name = "interviewbit_contract_employee")@Table(name = "interviewbit_contract_employee")@NoArgsConstructor@AllArgsConstructorpublic class InterviewBitContractEmployee EXTENDS InterviewBitEmployee { private LocalDate contractStartDate; private LocalDate contractEndDate; private String agencyName;}InterviewBitPermanentEmployee class: @Entity(name = "interviewbit_permanent_employee")@Table(name = "interviewbit_permanent_employee")@NoArgsConstructor@AllArgsConstructorpublic class InterviewBitPermanentEmployee extends InterviewBitEmployee { private LocalDate workStartDate; private int numberOfLeaves;}Disadvantages: |
|