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 theActor
andDirector
inherit 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.