Mapping inheritance
There are times when it will be very useful for entities to inherit from each others. Suppose, for example, that two entities Actor and Director exist, and each has a set of common attributes (name and birth date), but each has other specific attributes. It's very natural to create a Person superclass for them, putting inside it all the common attributes, then make both theActorandDirectorinherit from it.
The question is, if we have used the mentioned design, how will our entities be mapped to the database ? In JPA, there are three inheritance strategies that can be used to achieve inheritance mapping:
- Single table strategy
- Joined table strategy
- Table per class strategy
In the following sections, we are going to look at each strategy in detail.
Single table strategy
In the single table strategy, only one table will be used to represent all entities in the inheritance relationship. All common attributes, as well as the specific attributes, will be used as columns in one table...