为什么我的hibernate查询语句,在查询结果出来之后还会去更新数据? 25

我在做一个产品分页查询,只从数据库找些数据出来,为什么找出来了之后它还会有一堆的update语句,而且更新语句:updateproductsetname=?...wher... 我在做一个产品分页查询,只从数据库找些数据出来,为什么找出来了之后它还会有一堆的update语句,而且更新语句:update product set name =? ... where id=?,这些更新的数据跟原来数据库里的一摸一样,为什么?我只是单纯的找数据,没道理分页查询出10条记录之后又跑出10条对应的update,它不是吃多了吗?缓存也不是这意思啊??!!
急,特请教各位大侠.帮帮忙,谢谢了1
我用的是ssh做的,用hibernateTemplate....方法做的
session每次都是新的。所以我认为不存在缓存的管理问题
展开
 我来答
侨宜楠u4
2010-05-13 · TA获得超过259个赞
知道小有建树答主
回答量:61
采纳率:0%
帮助的人:112万
展开全部
不是吃饱了撑得,这个hibernate管理对象的生命周期的必然结果。假如你要从数据库查询产品 1>首先new个product对象(此时改对象为瞬态 没有纳入session管理) 2>从数据库查询获得product (此时product为持久态 即在数据库中有,内存中有 被session所管理。hibernate后台所执行的语句就是 select produc from ...)。3>查询完毕,你会提交事务,执行session.getTransation.commit;(其实这一步虽然你没显示的调用session.fush(),虚拟机也会自动调用,这样就是清理内存中的脏数据,将内存中的持久太对象保存到数据库 hibernate后台在这里执行了update product set name ...。product由持久太编程离线状态也成托管状态)。这里你的疑问就改明白了吧。实体对象的生命周期里,还有几种状态转换,自己好好看看吧。 hibernate这样设计自然是有他的好处--不用人工的进行脏数据检查,hibernate帮你做,免得疏忽大意导致对象没有持久化,有点类似于java虚拟机中的垃圾回收机制。
chenlei65368
2010-05-04 · 超过16用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:20.9万
展开全部
仔细检查方法的调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniapp15iwk0ai00uu0
2010-05-04 · TA获得超过159个赞
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:140万
展开全部
是不是你的查询方法里面有属性的setXXX()方法啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式