0

最近面试的时候面试官问了我一个问题,下面是问题——

假设一个请求被发送到一个 servlet 并且 servlet 执行了几个数据库事务(首先更新和提交,然后读取和更新并再次提交),这大约需要 3-4 分钟,在此期间用户按下取消按钮并且连接是丢失的。您将如何回滚整个事务。

我的回答是——由于 Servlet 抛出 IOException,我们可以处理异常并回滚事务。

但他再次问我,已经完成的数据库提交怎么办,你将如何回滚。

我一头雾水,回答说我从来没有遇到过这种情况。但我真的很想知道在这种情况下可以做些什么。

谢谢。

4

1 回答 1

0

但他再次问我,已经完成的数据库提交怎么办,你将如何回滚。

我认为这不是与 servlet 相关的问题。如果事务已在数据库中提交,则无法回滚。数据库事务有几个属性,称为ACID(原子性、一致性、隔离性、持久性)。在这种情况下适用的是Durability

“持久性是 ACID 属性,它保证已提交的事务将永久存在”

于 2013-10-01T14:33:45.147 回答