如果两个客户端同时请求了
业务逻辑中的某个方法
这个方法被spring配置了事务
比如:
public void modifyCard(int cardid){
 .....
 dao.update(cardid);
 .........}如果两个用户同时请求了这个方法
而用户1调用 modifyCard(100)
用户2调用modifyCard(200)如何防止脏数据的产生呢?是不是要给这个方法加synchronized呢,还是s2sh内部有解决机制之类的?

解决方案 »

  1.   

    Spring事务有粒度设置,并且有同步解决机制。
      

  2.   

    spring里有事物处理机制的,只需配置好事务管理bean(可以采用声明式事务管理),就可以不用理会事务了。
      

  3.   

    在你这个方法上面配置相应的事务传播特性,如果你采用注解,可以直接在方法上面写,如果你使用xml配置的话,把这个方法名称单独拿出来,在配置事务的时候为它单独配置事务隔离级别
      

  4.   

    用Spring配置事务管理的方法,具有事务的提交和回滚功能。
    但我问的是两个都正确的操作同时进行怎么办?
    两个用户的更改都没有问题,
    只是同时执行的话,可能会引起两个update一起操作数据库,
    所以这里要不要加同步呢?网上看spring关于同步的问题,没有搞清楚,所以大家还是来解答解答
      

  5.   

    通过spring设置事务传播特性,他会帮你解决这些问题了,不用我们操心。
      

  6.   

    最终的数据更新是放在数据库服务端的,当一个update操作在服务器执行时,默认是会将这个表锁住,另一个update操作必须等到这个操作完成后,才进行下一次update。spring中,可以自己事务的隔离机制,脏读、幻读、不可重复读都可以得到解决,当然,要牺牲性能。