我用spring定义了两个事务:
事务1:查表a的第一条记录的id;
事务2:根据id做一些操作,然后删除表a的第一条记录。
两个事务在一个for循环中,不断的取表a的第一条记录,直到删除表中的所有记录。
for(){
事务1;
事务2;
}但实际运行时出现了这样的情况,第n+1次循环读取了第n次循环中已经删除的id,进行了无效处理。也就是第n次循环中事务2的删除操作还没有commit,n+1次循环中的事务1就进行了查表操作,得到了删除前的数据。之后我将两个事务合并为一个事务3,就不会出现这种情况。
for(){
事务3;
}请问各位大牛,这里的事务1和事务2之间没有隔离性么?事务2的修改未提交,事务1就可以读取?
为什么合并成事务3后不同循环中的事务3就可以保证串行操作?项目用的是Spring+Struts+hibernate,数据库为oracle
事务1:查表a的第一条记录的id;
事务2:根据id做一些操作,然后删除表a的第一条记录。
两个事务在一个for循环中,不断的取表a的第一条记录,直到删除表中的所有记录。
for(){
事务1;
事务2;
}但实际运行时出现了这样的情况,第n+1次循环读取了第n次循环中已经删除的id,进行了无效处理。也就是第n次循环中事务2的删除操作还没有commit,n+1次循环中的事务1就进行了查表操作,得到了删除前的数据。之后我将两个事务合并为一个事务3,就不会出现这种情况。
for(){
事务3;
}请问各位大牛,这里的事务1和事务2之间没有隔离性么?事务2的修改未提交,事务1就可以读取?
为什么合并成事务3后不同循环中的事务3就可以保证串行操作?项目用的是Spring+Struts+hibernate,数据库为oracle
解决方案 »
- 在servlet里面setAttribute以后为什么在jsp里面getAttribute为null?
- 关于struts2下载问题
- 关于数据库连接池的疑惑,大家一起来讨论
- 问一下java调用bpel的问题(SOA高手进来啊)
- 怎么得到泛型的类型?
- 菜鸟求助!!!!!!!!!!!!!!!!!关于socket编程
- 问个STRUTS显示的问题!
- cloudscape -start启动Cloudscape数据库,不懂是是什么意思.
- 请教一个关于ROSE的问题?反向工程时为什么看不到类图?
- 请问:如何用VisualAge for java 4.0开始开发ejb?
- SSH整合问题,HinernateUserDAO里的方法没有执行?
- 请教OPC服务器通信问题
thread2 -> start transation2 -> begin -> select data (id = 1110)
如果你保证transation1和2 完全按照串行顺序执行,肯定不会有问题了。 如下所示。
start transation1 -> begin -> select or delete -> commit transation1-> start transation2 -> begin -> select or delete -> commit transation2
是的啊, 我就郁闷了...用的是spring2.5
事务1和事务2是不是分别对应两个service方法?