Я использую Hibernate в приложении Java и чувствую, что что-то можно сделать лучше для управления отношениями родитель / ребенок.
У меня есть сложный набор сущностей, которые имеют какие-то отношения между ними (один ко многим, многие ко многим, один к одному, как однонаправленные, так и двунаправленные).
Каждый раз, когда объект сохраняется и у него есть родитель, чтобы установить отношения, родитель должен добавить дочерний элемент в свою коллекцию (учитывая отношения один-к-одному).
Например:
Parent p = (Parent) session.load(Parent.class, pid);
Child c = new Child();
c.setParent(p);
p.getChildren().add(c);
session.save(c);
session.flush();
Точно так же, если я удаляю ребенка, то я должен явно удалить его и из родительской коллекции.
Child c = (Child) session.load(Child.class, cid);
session.delete(c);
Parent p = (Parent) session.load(Parent.class, pid);
p.getChildren().remove(c);
session.flush();
Мне было интересно, есть ли какие-то лучшие практики для выполнения этой работы другим способом: когда я сохраняю дочернюю сущность, автоматически добавляю ее в родительскую коллекцию. Если я удаляю ребенка, автоматически обновляю родительскую коллекцию, удаляя ребенка и т. Д.
Например,
Child c = new Child();
c.setParent(p);
session.save(c); // Automatically update the parent collection
session.flush();
или
Child c = (Child) session.load(Child.class, cid);
session.delete(c); // Automatically updates its parents (could be more than one)
session.flush();
Во всяком случае, было бы не сложно реализовать это поведение, но мне было интересно, существуют ли какие-либо стандартные инструменты или хорошо известные библиотеки, которые занимаются этой проблемой. И если нет, то каковы причины?
Спасибо