Java论坛网»Java技术»跨页面的事务问题

跨页面的事务问题

问?:
a ,b read data, then a modify and commit, b also modify and commit, an error should be thrown out!
也就是说read和update要放在一个事务中。但是如果在多个jsp之间中如何做呢?
难道要把事务的应用放到session中吗?
答!: 1:
这种情况,可以用数据库的事务来进行控制
答!: 2:
前面的不要做数据库的相关操作,等最后一个页面再去操作数据库,要不连接时间太长了
答!: 3:
read不需要事务控制,只有update和insert才需要~
答!: 4:
如果仅仅是数据库事务的话
java提供的有相应的回滚点、自动提交等等设置;
要是还牵扯到具体的业务逻辑
那你就自己写相应的代码来处理了~
答!: 5:
miaoliujun(傲龙) "前面的不要做数据库的相关操作,等最后一个页面再去操作数据库,要不连接时间太长了"

这也是一般的做法,但是这样代码过于集中到最后一个页面。而且最后的页面可能还要重读数据:
tx.begin;
read data;
modify data;
updata data;
tx.commit;

emin_lee() 说read不要事务,感觉不对,因为modify时的数据可能已经过时了。

infowain(infowain) :数据库的事务?如何做呢?
答!: 6:
楼主理解错这句话的意思了,

a ,b read data, then a modify and commit, b also modify and commit, an error should be thrown out!


我的理解是,a和b不能放在同一个transaction中,如果这样的话,a修改了一个数据然后提交,b又修改了同一数据然后提交,那么transaction commit后,数据库究竟要接受a修改的值还是b修改的值呢? 矛盾就在这里。你把a和b放在两个不同的transaction中就行了。

答!: 7:
看来我英语写的不是很准确。用中文描述下:
a,b是两个不同的用户,读入同一条数据,然后修改数据、提交(所有过程都在浏览器上进行)。假设a先提交,那么b提交时,应该要报错,如何实现这种效果?
答!: 8:
哪位有经验呢?
答!: 9:
参考Hibernate的version,就是表中一个字段version,每次update时更新,这样你要防止这种丢失修改的问题就只需在update语句中加一个where检查,如果发现version不对就throw exception 就行了
答!: 10:
这个问题是所有WEB程序都会遇见的问题,一般情况下这种问题可以被忽略。如果十分在意的话,解决的办法应该这样子比较稳妥:
when b is ready to modify the data which has been commited by another user a in UI, b should first check the data in DB whether it is what he retrieved before, if not, throws an exception.

相关JAVA教程:
求助---加载图片时怎样设置路径?
请各位大侠指点一下,数据连接的问题!
JTree如何编辑节点,大家帮忙看看
各位高手!好,怎么在JButton中设置标题的布局啊!
想学XML,看什么书比较好?
求助:jbuilder2006运行struts程序出错
Weblogic 下 关于ejb的一个问题
求救!!`各位高手能不能提供些学习JAVA方面的好网站
流程设计器问题
关于XML中加入DTD验证的问题!
weblogic里部署完毕,在调用的时候出了错
“一个Struts实现分页,增删改查,Tiles,国际化的DEMO”请教