tomcat1上  User user=userdao.getbyid(1);user.setage(20);tomcat2上  User user=userdao.getbyid(1);user.setage(30);显然,user对象已经出现类似于脏数据的问题。
怎么处理,疑惑了好几年了。现在真的想知道怎么解决。

解决方案 »

  1.   

    user对象的属性不是脏数据,两个操作虽然来自不同的tomcat,但都是有效的,肯定是先来后到的覆盖。
    实际上hibernate是自带乐观锁的,只要数据库是单点的或者是支持分布式的数据库,那这种脏数据只可能是应用的问题导致。
    简单的说就是应用不支持分布式,这种情况下做类似负载或者容灾的集群,就会引起各种问题。
    回到题目上,只说数据库操作,那么可以考虑增加JTA事务保证多应用的事务安全。
      

  2.   


    一般来说,我是不建议用hibernate上的缓存机制咯,一般都是用独立第三方缓存,这样容易控制点,你这样加载的缓存除非是对hibernate很熟悉,才能分布式无压力咯
      

  3.   


    就算事务能解决我说的这个问题,但是mysql isam支持Hibernate事务吗?不支持吧。所以,还是解决不了。
      

  4.   


    一般来说,我是不建议用hibernate上的缓存机制咯,一般都是用独立第三方缓存,这样容易控制点,你这样加载的缓存除非是对hibernate很熟悉,才能分布式无压力咯恩,可能你说的,就是我想要的,但是你能不能用代码示例详细说说,怎么不使用“hibernate上的缓存机制”。
      

  5.   


    一般来说,我是不建议用hibernate上的缓存机制咯,一般都是用独立第三方缓存,这样容易控制点,你这样加载的缓存除非是对hibernate很熟悉,才能分布式无压力咯你说的不使用hibernate上的缓存机制,能具体说说怎么个不使用方法吗。
      

  6.   


    就算事务能解决我说的这个问题,但是mysql isam支持Hibernate事务吗?不支持吧。所以,还是解决不了。
    我从头到尾都没说hibernate事务啊......
      

  7.   


    一般来说,我是不建议用hibernate上的缓存机制咯,一般都是用独立第三方缓存,这样容易控制点,你这样加载的缓存除非是对hibernate很熟悉,才能分布式无压力咯
    你没有回错吧,jta事务和缓存有什么关系.....
      

  8.   


    一般来说,我是不建议用hibernate上的缓存机制咯,一般都是用独立第三方缓存,这样容易控制点,你这样加载的缓存除非是对hibernate很熟悉,才能分布式无压力咯你说的不使用hibernate上的缓存机制,能具体说说怎么个不使用方法吗。
    可以到我的博客参考下使用memcached,或者下载我之前的项目实例,如何独立使用ehcache,因为hibernate也是整合使用ehcache而已,独立操控耦合度比较低
      

  9.   

    memcached我会用。但是那是二级缓存呢!现在说的是一级缓存的事情。
      

  10.   


    一般来说,我是不建议用hibernate上的缓存机制咯,一般都是用独立第三方缓存,这样容易控制点,你这样加载的缓存除非是对hibernate很熟悉,才能分布式无压力咯你说的不使用hibernate上的缓存机制,能具体说说怎么个不使用方法吗。
    可以到我的博客参考下使用memcached,或者下载我之前的项目实例,如何独立使用ehcache,因为hibernate也是整合使用ehcache而已,独立操控耦合度比较低
    memcached我会用。但是那是二级缓存呢!现在说的是一级缓存的事情。
      

  11.   


    一般来说,我是不建议用hibernate上的缓存机制咯,一般都是用独立第三方缓存,这样容易控制点,你这样加载的缓存除非是对hibernate很熟悉,才能分布式无压力咯你说的不使用hibernate上的缓存机制,能具体说说怎么个不使用方法吗。
    可以到我的博客参考下使用memcached,或者下载我之前的项目实例,如何独立使用ehcache,因为hibernate也是整合使用ehcache而已,独立操控耦合度比较低
    memcached我会用。但是那是二级缓存呢!现在说的是一级缓存的事情。
    哎...等你理解了再说会用吧,一级缓存也可以各种形式来玩,就象session机制一样,你把数据存到session里面也可以,问题是你如何自己创建一个新的session机制来适应你的分布式,而不是用原生的,那完全是不适合在大数据的应用上生存的
      

  12.   


    一般来说,我是不建议用hibernate上的缓存机制咯,一般都是用独立第三方缓存,这样容易控制点,你这样加载的缓存除非是对hibernate很熟悉,才能分布式无压力咯你说的不使用hibernate上的缓存机制,能具体说说怎么个不使用方法吗。
    可以到我的博客参考下使用memcached,或者下载我之前的项目实例,如何独立使用ehcache,因为hibernate也是整合使用ehcache而已,独立操控耦合度比较低
    memcached我会用。但是那是二级缓存呢!现在说的是一级缓存的事情。
    哎...等你理解了再说会用吧,一级缓存也可以各种形式来玩,就象session机制一样,你把数据存到session里面也可以,问题是你如何自己创建一个新的session机制来适应你的分布式,而不是用原生的,那完全是不适合在大数据的应用上生存的你的意思就是不用hibernate的一级缓存是吗? 也就是get po之后,马上clear或者evict,变成vo.然后自己在redis或者memcache上维护这个vo是吗。
      

  13.   

    any one?
      

  14.   

    使用版本号维护,在数据库增加一个版本号字段,由hibernate自动比较