Я не уверен, что есть абсолютный ответ на ваши вопросы, это действительно зависит от вашей конкретной ситуации и того, что вы хотите представить с точки зрения ОО.Предоставление некоторого примера, вероятно, поможет.
Но я подозреваю, что вы можете прочитать о Mapped Superclasses .Вот небольшая выдержка из спецификации JPA:
Сущность может наследоваться от суперкласса, который предоставляет постоянное состояние сущности и информацию отображения, но который сам не является сущностью.Как правило, цель такого сопоставленного суперкласса состоит в том, чтобы определить информацию о состоянии и отображении, которая является общей для нескольких классов сущностей.
Сопоставленный суперкласс, в отличие от сущности, не может запрашиваться и не может быть передан в качестве аргумента EntityManager
или Query
операций.Сопоставленный суперкласс не может быть целью постоянных отношений.
Как абстрактные, так и конкретные классы могут быть указаны как сопоставленные суперклассы.MappedSuperclass
аннотация (или mapped-superclass
элемент XML-дескриптора) используется для обозначения сопоставленного суперкласса.
Для класса, обозначенного как MappedSuperclass
, для него не определена отдельная таблица.Его информация о сопоставлении применяется к объектам, которые наследуются от него.
И я думаю, что вам также следует прочитать о различных стратегиях наследования для представления наследования на уровне базы данных (одна таблица на иерархию классов, таблицадля каждого конкретного класса, объединенного подкласса), поддерживаемого JPA, поскольку они не обеспечивают одинаковый уровень поддержки полиморфных запросов.Спецификация JPA охватывает это прилично.
Ниже соответствующие ссылки.
Ссылки
- Спецификация JPA 1.0
- 2.1.9 Наследование
- 2.1.10 Стратегии отображения наследования
- Справочное руководство по аннотациям Hibernate