码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate之即时更新

时间:2015-01-24 11:33:58      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

  昨天工作中遇到了一个简单的问题,弄了好久,都怪自己没有好好的去了解hibernate,导致了这样的问题弄了两三个小时。

  问题是这样的:我想即时更改数据,然后再查询

      (1)用Spring的getHibernateTemplate.update来更新,

      (2)然后用this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(select * ).addScalar.....查询。

      我以为步骤(1)会更新到数据库。然而查询出来的数据一直不对。我以为是我的逻辑错误导致了数据的不正确,后来调试发现是由于数据根本

没有更新到数据库。

     我上网搜索发现原因如下:   

    Hibernate缓存分为二级,第一级存放于session中称为一级缓存,默认带有且不能卸载。

  第二级是由sessionFactory控制的进程级缓存。是全局共享的缓存,凡是会调用二级缓存的查询方法都会从中受益。只有经正确的配置后二级缓存才会发挥作用。同时在进行条件查询时必须使用相应的方法才能从缓存中获取数据。比如Query.iterate()方法、loadget方法等。必须注意的是session.find方法永远是从数据库中获取数据,不会从二级缓存中获取数据,即便其中有其所需要的数据也是如此。

     参考:http://blog.csdn.net/woshichenxu/article/details/586361

      

Hibernate之即时更新

标签:

原文地址:http://www.cnblogs.com/wanglinhai/p/4245596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!