Системы реляционных баз данных на практике не обеспечивают поддержку наследования, но в свою очередь Hibernate предлагает несколько стратегий для использования объектно-ориентированного отображения Entity классов на объекты (таблицы) базы данных

  • MappedSuperlass — наследование реализовано только в модели предметной области без отражения ее в схеме базы данных.
  • Single table — вся иерархия классов отображается в одну таблицу, которая содержит объекты, принадлежащие к разным типам классов.
  • Joined table — базовый класс (класс предок) и все подклассы имеют свои собственные таблицы базы данных и выбор объекта подкласса требует соединения с родительской таблицей.
  • Table per class — таблица для каждого класса — каждый подкласс имеет свою собственную таблицу, содержащую свойства подкласса и базового класса.

Аннотация @MappedSuperclass

Аннотация @MappedSuperclass позволяет реализовать наследование Entity классов только в модели предметной области без отражения ее в схеме базы данных. @MappedSuperclass определяет класс - предок для Entity классов, описанные и аннотированные свойства и методы которого будут применены в классах-наследниках. Описанный супер класс не отображается на отдельную таблицу.

Подробнее: Аннотация @MappedSuperclass

Аннотация @AttributeOverride

Аннотация @AttributeOverride используется для переопределения сопоставления атрибутов, унаследованного от сопоставленного суперкласса (класса-предка) или встраиваемого объекта.

Подробнее: Аннотация @AttributeOverride