Наследование против состава в JPA - PullRequest
0 голосов
/ 04 июля 2019

Устойчивость устаревших приложений основана на 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 ).

Какие критерии могут помочь при выборе стратегии? Каковы плюсы и минусы каждого решения?

В интернете я уже нашел следующее руководство, в котором сравнивает стратегии наследования и это по составу , но мои идеи еще не ясны.

...