处理数据库的并发任务,用synchronized能解决冲突吗? synchronized加锁的是程序中的对象,而不是数据库中的表。应该指定联结操作数据库的方式为排他性锁,才可以保证。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ejb我不太懂,我想这个问题ejb肯定有它自己的解决方法。其实可以自己做一个对整个表的锁,每个bean在对表操作前都要检索该表是否已经被锁住。 如果出该方法之外没有其他地方对相同表进行操作,楼主这样就够了。对数据库的表进行加锁不好,一旦事务未提交或回滚之前程序当掉,那加的锁就一直解不了了。我们现在使用一套update count机制,每个表里都有一个updatecount字段,提交更改时把updatecount加1,别的并发事务在开始的时候取updatecount的值,提交前再取一次,如果变化了,表示数据已经dirty,就会滚事务。否则,把updatecount加1,提交事务。 An enterprise Bean must not use thread synchronization primitives to synchronize execution ofmultiple instances. Synchronization would not work if the EJB Container distributed enterprisebean instances across multiple JVMs. 我已经用了一种类似update count的方法,数据表中都有updateTime字段,判断这个字段就可以知道数据是不是被别人修改过。现在ejb中的synchronized其实已经没用了,但是我还是写了,因为客户说:要看见这个字他才放心。只是希望加上他不会出问题。现在想起来:ValueObject模式中有一个rowVersion,应该就是避免并发造成脏数据的。 怎么设计类与表:学生与小组 请教经典算法 新手求助 tomcat配置问题 求助:如何 用java解压Unix命令 compress 压缩的压缩文件(.z格式) <script defer>之中的“defer”是名字吗,<script> 的定义方法谁有明细啊,强以贴出来吗? BMP问题求解 求教 接口奇怪的用法???????????? 我使用JBuilder编写Java程序,为什么不能将编译的类拿出来自己使用? 一个很菜的问题,请大家进来看看。 jdbc调用sqlserver存储过程的问题。求救!
其实可以自己做一个对整个表的锁,每个bean在对表操作前都要检索该表是否已经被锁住。
对数据库的表进行加锁不好,一旦事务未提交或回滚之前程序当掉,那加的锁就一直解不了了。我们现在使用一套update count机制,每个表里都有一个updatecount字段,提交更改时把updatecount加1,别的并发事务在开始的时候取updatecount的值,提交前再取一次,如果变化了,表示数据已经dirty,就会滚事务。否则,把updatecount加1,提交事务。
multiple instances. Synchronization would not work if the EJB Container distributed enterprise
bean instances across multiple JVMs.