Вопрос проверяет понимание объектно-реляционного отображения и умение моделировать связи между сущностями.
В JPA существуют связи one-to-one, one-to-many, many-to-one и many-to-many. Они описывают, как объекты связаны друг с другом и как эта связь отображается в базе данных. Связи задаются с помощью аннотаций. Корректный выбор типа связи влияет на производительность и целостность данных. Это одна из базовых тем JPA.
Связь в JPA — это описание отношения между сущностями, которое отражает связь таблиц в реляционной базе данных.
Перед использованием важно понимать семантику каждой связи.
@OneToOne
один объект связан ровно с одним другим
часто используется для разделения сущности на логические части
@OneToOne
private Profile profile;
@OneToMany
один объект связан с несколькими другими
обычно обратная сторона many-to-one
@OneToMany(mappedBy = "order")
private List<Item> items;
@ManyToOne
несколько объектов ссылаются на один
самый распространённый тип связи
@ManyToOne
private User user;
@ManyToMany
несколько объектов связаны с несколькими
реализуется через промежуточную таблицу
@ManyToMany
private Set<Role> roles;
Связи бывают:
однонаправленные
двунаправленные
Это влияет на владение связью и генерацию SQL.
Тип связи в JPA выбирается исходя из бизнес-модели. Неправильный выбор может привести к сложным запросам и проблемам с производительностью.