小编Joh*_*ams的帖子

如果你不在Hibernate中回滚事务会怎么样?

我读到的关于Hibernate的所有内容都表明你必须回滚事务并在发生错误时关闭会话,并且通常会给出以下代码的一些变体(取自Hibernate的文档)作为示例:

Session sess = factory.openSession();
Transaction tx = null;
try {
    tx = sess.beginTransaction();
    // do some work
    ...
    tx.commit();
} catch (RuntimeException e) {
    if (tx != null) tx.rollback();
    throw e; // or display error message
} finally {
    sess.close();
}
Run Code Online (Sandbox Code Playgroud)

出于几个原因,这种模式对我来说似乎很奇怪.首先,对于一个通常用于简化事物的框架来说,这似乎是不合理的复杂.更重要的是,如果try块中的代码抛出除了RuntimeException?之外的其他内容会发生什么?在这种情况下,Hibernate看起来好像必须能够用开放事务优雅地关闭会话,大概是通过回滚它,但如果这是真的,为什么还要打电话rollback呢?

java orm hibernate transactions rollback

7
推荐指数
1
解决办法
3043
查看次数

标签 统计

hibernate ×1

java ×1

orm ×1

rollback ×1

transactions ×1