锁定老帖子 主题:两进程修改数据库,不同步问题的解决办法
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-01
最后修改:2009-07-01
只能说这个设计太搓了,明知道有别的进程还需要修改数据库,还会用上hibernate。
|
|
返回顶楼 | |
发表时间:2009-07-01
没搞明白,session是一级缓存,你每次查询如果重新建个session,再查询,会出现你说的情况吗?
如果不显示打开事务,每一次执行sql语句应该都是自动启动一个事务啊 |
|
返回顶楼 | |
发表时间:2009-07-01
触发器 -> Java -> Send Message(JMS) -> MBean or Message Process Center
|
|
返回顶楼 | |
发表时间:2009-07-01
dengtl 写道 触发器 -> Java -> Send Message(JMS) -> MBean or Message Process Center
oracle才能这么玩吧。 |
|
返回顶楼 | |
发表时间:2009-07-01
这么累阿,用hibernate乐观锁
|
|
返回顶楼 | |
发表时间:2009-07-01
为什么不用个标签,只要查标签就可以知道数据库里改动没有,用在数据库里做这么多的查询
|
|
返回顶楼 | |
发表时间:2009-07-01
具体问题的原因我也没有去深入研究,但是采用给查询也加上事务的方法确实可以解决我的问题,呵呵
我有点急功近利了 |
|
返回顶楼 | |
发表时间:2009-07-01
最后修改:2009-07-01
你犯下最致命的错误的你根本不了解hibernate的工作方式,很明显在一个线程里面使用session总是命中一级缓存,
你修改后的代码能够成功的关键在这里 dao.getSession().close(); 与事务无关,就算启用事务,对象还是在session缓存里面。 解决方式很多,比如清一级缓存,你选择了最差的一种方式。 再多说一句,查询怎么都不加事务?这毛病得改改。 |
|
返回顶楼 | |
发表时间:2009-07-01
ray_linn 写道 只能说这个设计太搓了,明知道有别的进程还需要修改数据库,还会用上hibernate。
为什么有别的进程还需要修改数据库就不能用hibernate,只要不启用二级缓存就OK。
|
|
返回顶楼 | |
发表时间:2009-07-01
rain2005 写道 ray_linn 写道 只能说这个设计太搓了,明知道有别的进程还需要修改数据库,还会用上hibernate。
为什么有别的进程还需要修改数据库就不能用hibernate,只要不启用二级缓存就OK。
无非以性能为代价呗。 |
|
返回顶楼 | |