hibernate用于web的项目时,不停刷新得到不同结果!

如果是用的mysql数据库,默认的事务级别为可重复读,如果你查询不用事务,那么用同一个数据库连接多次request查询读到的是自上一次该连接事务提交后的同一个数据快照,虽然期间其他事务可能修改了数据,但你读不到。直到该连接用于更新或插入数据而提交,用该连接读取的快照才会改变。因为每次请求分配的数据库连接可能不是同一个,所以各次的表现不一样。
所以强调即使只有数据查询也要使用事务,并提交事务。
有的连接池在将连接放回到池中时会自动提交事务,所以没有问题。

另外request结束不关闭hibernate session是不好的方式,每个session中保持着一个数据库连接,最后每个处理线程都保持着一个session,使得数据库连接数和线程池中的线程数一样多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值