Как реализовать агрегирование и декомпозицию с помощью API Java Persistence? Каковы наилучшие методы?Агрегация и разложение в JPA
Спасибо заранее, Daniel
Как реализовать агрегирование и декомпозицию с помощью API Java Persistence? Каковы наилучшие методы?Агрегация и разложение в JPA
Спасибо заранее, Daniel
Я нашел атрибут orphanRemoval
для @OneToMany
и @OneToOne
отношений:
Когда целевой объект в один-к-одному или один-ко-многим удаляется из отношения, часто желательно каскадировать операцию удаления на целевой объект. Такие целевые объекты считаются «сиротами», а атрибут orphanRemoval может использоваться для указания того, что осиротевшие объекты должны быть удалены. Например, если в заказе много позиций, и одна из позиций удалена из заказа, удаленная позиция считается сиротой. Если для параметра orphanRemoval установлено значение true, объект позиции будет удален, когда позиция будет удалена из заказа.
Использование:
@OneToMany(mappedBy="customer", orphanRemoval=true)
public List<Order> orders;
Есть две вещи, которые должны быть очень четко при обращении агрегацию в JPA.
Отношения в мире Java регулируются областью применения. Например, у пользователя может быть много адресов, поэтому мы сохраняем агрегирование адреса в User и не сохраняем обратную связь. Для композиции нам нужно обработать каскадное поведение.
Более подробно обработка может быть видна here