在最近的一次面试中,面试官问了我一个问题,以下是问题:
假设一个请求被发送到一个servlet,并且servlet执行了几个DB事务(首先更新和提交,然后读取和更新,然后再次提交),大约需要3-4分钟,在此期间,用户按下cancel按钮,连接就会断开。如何回滚整个事务。
我的回答是:既然Servlet抛出了IOException,我们就可以处理异常并回滚事务。
但他又一次问我,已经完成的数据库提交怎么办,你会如何回滚。
我一片空白,回答说我从来没有遇到过这种情况。但我真的很想知道在这种情况下可以做些什么。
谢谢。
发布于 2013-10-01 22:33:45
,但他再一次问我已经完成的DB提交怎么办,你会如何回滚它。
我认为它不是一个与servlet相关的questions.If,事务是在数据库中提交的,不能回滚它。数据库事务有几个称为ACID (原子性、一致性、隔离性、持久性)的属性。在这种情况下适用的是Durability:
“持久性是ACID属性,它保证已提交的事务将永久存在”
https://stackoverflow.com/questions/19117724
复制相似问题