问题是这样的,我扫描数据库表中的数据,如果发现数据该表发生改变了,就要在服务器端知道它改变了我的思路是这样的:
  第一次扫描时,查询数据库,吧查询的List1<User>绑定到request中,每隔15分钟再次扫描得到的list2<user>和request中绑定的list进行对比,如果发现里面的list1中的user和list2中的user不相同时,取出list2中user 并得到这个user对象
  总觉得这个思路不对劲,各位大神,有什么好的思路,高见,指点下!!

解决方案 »

  1.   

    触发器的话,那在java中可以得到吗?比如修改了name字段,在服务端扫描的时候可以得到吗?还有触发器只是在数据库中调用吧。
    在服务端怎么调用这个触发器。
      

  2.   

    我不太明白,捆绑到request是什么意思!!!
      

  3.   

    1、我觉得也可以,第一次取出 ,之后的再取出一次 ,和之前的对比2、你的修改是通过什么修改的 ?是通过你的程序来修改的?还是直接通过数据库客户端修改的 ?
        如果是通过你的程序修改的话 ,你可以增加一个监控表,如果修改了User则往这种表中插入一条数据,
    下次读取的时候 ,把数据读取走 ,然后清空这张表 ,根据读取的数据,到之前加载的用户数据中查找如果是通过数据客户端修改的 ,我觉得第一种方式就可以。
      

  4.   

    定时检测表的变更,在java中做,用线程,不要用定时器,万一你的数据量超大,15分钟检测不完怎么办/第一次加载全部数据是个极错误的,如果你的数据量很大,第一次加载估计就out of memory了,不out也卡得你不得了.好点的办法是,在数据库表中增加字段,用于标识是否变更,定时检查时,扫描这些变更状态.
      

  5.   

    在表中加个lastUpdate字段保存该记录最后的更新时间就可以了。第一次扫描时记录最后更新时间,第二次扫描的时候查找该时间之后的记录就可以了
      

  6.   

    嗯,数据库有个updatetime,和创建的时间相同,查询出判断于创建的时候的时间对比下就行,但是如果修改多次 ,updatetime改变了,这样每次查询都会发现它是修改的了。重复了。
      

  7.   

    1.第一次扫描的时候将updatetime保存到系统的缓存中
      比如表中有三条记录:第一条的updatetime是3点,第二条是4点,第三条是5点。就可以把5点放到系统内存中。2.第二次扫描的时候查找updatetime是5点之后的记录就可以,这些记录就是修改过的;然后再更新缓存中的updatetime。
      假如第一条记录的updatetime变成了6点,那么就把6点更新到系统的缓存中。