Агрегация и разложение в JPA - PullRequest
0 голосов
/ 03 декабря 2010

Как реализовать агрегацию и декомпозицию с помощью Java Persistence API? Каковы лучшие практики?

Спасибо заранее, Daniel

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010

Есть две вещи, которые должны быть очень понятны при обработке агрегирования в JPA.

  1. Отношения в реляционном мире.
  2. Отношения, требуемые в мире объектов.

Отношения в мире Java регулируются необходимостью домена.Например, у пользователя может быть много адресов, поэтому мы сохраняем агрегирование адресов в User и не сохраняем обратную связь.Для композиции нам нужно обработать каскадное поведение.

Более подробное описание можно посмотреть здесь

0 голосов
/ 03 декабря 2010

Я нашел атрибут orphanRemoval для отношений @OneToMany и @OneToOne:

Когда целевой объект в отношении один-к-одному или один-ко-многим удаляется из отношения, часто желательно каскадно удалить операцию для целевого объекта. Такие целевые объекты считаются «сиротами», и атрибут orphanRemoval может использоваться для указания того, что потерянные объекты должны быть удалены. Например, если в заказе много позиций, и одна из позиций удаляется из заказа, удаленная позиция считается сиротой. Если для orphanRemoval установлено значение true, объект позиции будет удален при удалении позиции из заказа.

Использование:

@OneToMany(mappedBy="customer", orphanRemoval=true)
public List<Order> orders;
...