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:

  • This type of strategy offers less performance due to the need for additional joins to get the data.
  • This strategy is not supported by all JPA providers.
  • ORDERING is tricky in some cases since it is done based on a class and later by the ordering criteria.


Discussion

No Comment Found