Ответ 1
Вам может быть интересен раздел 2.12 "Стратегии сопоставления наследования" спецификации JPA 2.0, так как он суммирует все возможные типы наследования, а также их преимущества и недостатки, Позвольте мне вытащить только самые интересные фрагменты:
2.12.1 Стратегия иерархии отдельных таблиц в классе
Эта стратегия сопоставления обеспечивает хорошую поддержку полиморфногоотношения между объектами и для запросов, которые иерархии классов. Однако у этого есть недостаток, который требует, чтобы столбцы, соответствующие состоянию, специфичному для подклассов, обнуляемым.
2.12.3 Таблица для стратегии конкретного класса
Эта стратегия имеет следующие недостатки:
- Он обеспечивает плохой поддержку полиморфных отношений.
- Обычно для запросов, которые предназначены для диапазона по иерархии классов, требуется, чтобы были запрошены SQL UNION запросы (или отдельный запрос SQL для каждого подкласса).
2.12.2 Присоединительная стратегия подкласса
У него есть недостаток, который требует, чтобы одна или несколько операций объединениявыполняться для создания экземпляров подкласса. В глубоком классе иерархии, это может привести к неприемлемой производительности. Запросы, которые диапазон по иерархии классов также требует объединения.
Кроме того, если вы планируете поддерживать JPA-совместимость, помните, что JPA-провайдер не должен поддерживать TABLE_PER_CLASS
тип стратегии.
Я лично считаю, что мы должны идти за таблицей на подкласс, потому что в будущее, если мы хотим ввести общий столбец, мы можем сделать это на одном но в случае конкретного класса мы должны сделать это в нескольких таблицы.
Правда, но стратегия JOINED также предоставляет вам одну и ту же функцию и позволяет указывать общие свойства в одной таблице.
Надеюсь, что это поможет!