在同一会话中休眠多个对象更新
Posted
技术标签:
【中文标题】在同一会话中休眠多个对象更新【英文标题】:Hibernate multiple object update in same session 【发布时间】:2014-07-29 10:47:03 【问题描述】:使用 Hibernate 我需要通过调用例如更新多个对象。 updateDetails() 函数如下所示:
function updateDetails()
Session session = this.getSessionFactory().openSession();
Employee emp=(Employee )session.load(Employee.class, empId);
emp.salary(2000);
Account acc=(Account)session.load(Account.class, accId);
account.setTotal(2000);
Transaction tx=session.beginTransaction();
session.update(emp);
session.update(acc);
tx.commit();
result=true;
session.close();
最好的方法是什么?
在同一会话中更新多个相同或不同类型的对象会导致休眠中的任何问题吗?
【问题讨论】:
通常,您首先打开事务,然后加载和修改对象,然后提交事务。那么就不需要调用session.update(...)
了。
这就是使用像 Hibernate 这样的 ORM 的全部意义,它可以更轻松地处理更复杂的对象层次结构!你真的应该至少部分地阅读在线文档来弄清楚你实际使用它的目的。
【参考方案1】:
为什么不呢。你可以这样做。休眠允许。
由于您使用的是事务管理,因此答案取决于您的上下文。如果您想保存两个对象而不保存另一个对象,请在单独的事务中更新它们。
如果您想成功保存整个信息,并希望在任何更新失败时恢复所有信息,请保持当前格式。
【讨论】:
以上是关于在同一会话中休眠多个对象更新的主要内容,如果未能解决你的问题,请参考以下文章