Устойчивость устаревших приложений основана на JPA. Существует сущность People, сопоставленная с таблицей базы данных People .
Теперь подмножеству всех строк в People нужны дополнительные поля.
Одним из возможных решений является использование наследования jpa и создание нового объекта, предположим, что EmployeedPeople , который расширяет People .
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class People {
...
@Entity(name = “EmployeedPeople”)
public class EmployeedPeople extends People {
В качестве альтернативы я могу использовать однонаправленное отношение один к одному
@Entity(name = “EmployeedPeople”)
public class EmployeedPeople {
...
@OneToOne(optional = false)
private People commonPersonData;
Я подумал и о третьем способе: новая сущность основана на представлении базы данных, которое объединяет таблицу People с таблицей EmployeedData .
Этот последний подход хорош для чтения EmployeedPeople , но нецелесообразен для вставки и обновления, поскольку мне приходится работать с различными объектами ( People и EmployeedData ).
Какие критерии могут помочь при выборе стратегии?
Каковы плюсы и минусы каждого решения?
В интернете я уже нашел следующее руководство, в котором сравнивает стратегии наследования и это по составу , но мои идеи еще не ясны.