【发布时间】:2012-03-04 04:43:35
【问题描述】:
我目前正在尝试解决一个问题,即我在 Java Swing 应用程序中使用 Hibernate 4,而实体之间存在多个多对多关系。
例如,Project 实体与Person 有关系。 Person 和 Project 具有多对多的关系。一个项目可以有很多类别,所以也存在多对多的关系。
Person *-----* Project *-----* Category
当我有一个摇摆表单时,我可以在其中编辑关于 Person、Project 和 Category 的所有信息,它涉及当用户点击“保存”按钮时保存 Person,保存/更新 Person 的可能解决方案是什么?
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();
}
}
因为在 Person 内部还有一个 collection 的 Projects 和一个 collection Project 中的 Categoy 的 可能已更改,我是否必须进行递归类型的保存(首先保存/更新所有子- 集合包含的实体,然后保存/更新 Person 实体)还是我只需要保存 Person 实体,Hibernate 将保存/更新机制应用于以 Person 为根的整个实体树?有什么最佳做法吗?
【问题讨论】: