在同一会话中休眠多个对象更新

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】:

为什么不呢。你可以这样做。休眠允许。

由于您使用的是事务管理,因此答案取决于您的上下文。如果您想保存两个对象而不保存另一个对象,请在单独的事务中更新它们。

如果您想成功保存整个信息,并希望在任何更新失败时恢复所有信息,请保持当前格式。

【讨论】:

以上是关于在同一会话中休眠多个对象更新的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 中休眠 - 动作之间的延迟

在 Swift 中休眠或延迟 Timer 线程

在批处理文件中休眠

在 Informix SPL 过程中休眠

为啥要在 bash 中休眠和等待?

在 16 位裸机 nasm 组件中休眠 x 毫秒