В настоящее время я пытаюсь решить проблему, заключающуюся в том, что я использую Hibernate 4 в приложении Java Swing, имея несколько взаимосвязей «многие ко многим» между сущностями.
Например, сущность Project связана с Person . Человек и Проект имеют отношения многие ко многим. Проект может быть во многих категориях , поэтому существует также отношение многие ко многим.
Person *-----* Project *-----* Category
Когда у меня есть свинг-форма, где я могу редактировать всю эту информацию о Персоне , Проекте и Категории , и это касается сохранения Персона Когда пользователь нажмет кнопку «Сохранить», что будет возможным решением для сохранения / обновления Персона ?
void savePerson(Person p){
Session sess = factory.openSession();
Transaction tx = null;
try {
tx = sess.beginTransaction();
// steps to be done
tx.commit();
}
catch (RuntimeException e) {
if (tx != null) tx.rollback();
}
finally {
sess.close();
}
}
Поскольку существует также коллекция из Проектов внутри Персона и коллекция из Categoy внутри Проект , который мог быть изменен, нужно ли делать рекурсивный тип сохранения (сначала сохраните / обновите все дочерние объекты, которые содержатся в коллекциях, а затем сохранить / обновить сущность Person) или мне нужно только сохранить сущность Person, а Hibernate применяет механизм сохранения / обновления ко всему дереву сущностей с Person в качестве корня? Есть лучшие практики?