Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate中的每会话事务还是每查询事务模式?_Hibernate_Exception_Transactions_Rollback - Fatal编程技术网

Hibernate中的每会话事务还是每查询事务模式?

Hibernate中的每会话事务还是每查询事务模式?,hibernate,exception,transactions,rollback,Hibernate,Exception,Transactions,Rollback,我们有一个servlet来服务许多并发请求,有时一些请求抛出异常。我在《Hibernate指南》中看到了以下警告: “如果会话引发异常,包括任何SQLException, 立即回滚数据库事务,调用Session.close() 并放弃会话实例。“ 在我的真实场景中,一个请求对数据库进行了许多重要的更改,当我们发现异常时,我们必须回滚以前所做的所有更改 因此,似乎我们必须实现每个请求的事务模式,而不是每个查询的事务模式,以确保所有更改都将回滚 是吗 这取决于您想要什么,但是是的,一般来说,您希望在

我们有一个servlet来服务许多并发请求,有时一些请求抛出异常。我在《Hibernate指南》中看到了以下警告:

“如果会话引发异常,包括任何SQLException, 立即回滚数据库事务,调用Session.close() 并放弃会话实例。“

在我的真实场景中,一个请求对数据库进行了许多重要的更改,当我们发现异常时,我们必须回滚以前所做的所有更改

因此,似乎我们必须实现每个请求的事务模式,而不是每个查询的事务模式,以确保所有更改都将回滚


是吗

这取决于您想要什么,但是是的,一般来说,您希望在请求的生命周期中有一个事务,并且希望该请求的所有db操作都参与到该事务中。通常,这也意味着有一个会话绑定到请求

这种模式在并发环境中的性能和可伸缩性如何?我知道每笔交易都会有很多查询。但是Hibernate指南说:“为了减少数据库中的锁争用,数据库事务必须尽可能短。”