`
dd2086
  • 浏览: 35013 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

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

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

相关推荐

Global site tag (gtag.js) - Google Analytics