Hibernate 缓存问题
来源:互联网 发布:google play软件下载 编辑:程序博客网 时间:2024/05/17 08:39
今天做项目的时候,碰到了一个Hibernate二级缓存的问题。 在进行一个更新操作后,再想从数据库里取东西就会出现NullPointerException。相当郁闷,明明那个对象有封装了那个id。可是就是取不出来,开始以为是mapping的问题,结果查映射文件,没有问题。而如果不进行那个更新操作,就可以取到id,然后正常的使用那个po。苦苦调试,后来居然还以为是spring事务控制上的问题,苦查无果。
十分钟过后:
原来在UPDATE的时候,因为更新的只是部分数据所有没有把他上级的id保存下来,当然也没有设置hidden。然后我刚好要做的另外一个操作,也是用同一个POJO。这个时候问题就来了,因为update的时候,Hibernian缓存了那个对象。而我在此去取得时候,取得就是缓存的的东西,当然找不到id。
解决的办法有两种,一种是在update表单的时候加上一个隐藏的字段。
另外一种是在update这个动作最后显示的clear缓存。各有优缺点,从安全性上我选择了第二种。
完了总结一下Hibrnate的缓存机制:
hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。
二级缓存是SessionFactory级别的全局缓存,我们项目用的是ehcache,所有设置如下:hibernate.cache.provider_class=net.sf.hibernate.cache.EhCacheProvider如果使用查询缓存,加上hibernate.cache.use_query_cache=true 。
。。。。另外还有Class的缓存,查询缓存,Collection缓存 ,缓存策略太多了。要下班回家了。值得一提的是N+1的问题,有时间再具体写~~~
- hibernate缓存的问题
- Hibernate 缓存问题
- Hibernate 缓存问题
- Hibernate 缓存问题 续...
- Hibernate的缓存问题
- hibernate的缓存问题
- Hibernate 缓存问题
- hibernate缓存的问题
- Hibernate缓存问题
- 关于hibernate缓存的问题
- hibernate读取数据库缓存问题
- 关于hibernate缓存的问题
- Hibernate中的Session缓存问题
- Hibernate中缓存的问题
- Hibernate缓存问题(Problem with Hibernate Cache)
- 详解hibernate的cache缓存问题
- hibernate刷新数据时的缓存问题
- Spring Hibernate sqlquery 查询结果 缓存问题
- Hibernate查询方法与缓存的关系
- Hibernate查询缓存
- hibernate级联操作及缓存
- Hibernate缓存何时使用和如何使用
- Hibernate中 一 二级缓存及查询缓存的学习总结
- Hibernate 缓存问题
- Hibernate查询缓存综合
- hibernate一级缓存和二级缓存的区别
- 进入大学应该做的第一件事
- hibernate一级缓存(转)
- [经验随笔]fedora 11安装mplayer之呕心沥血
- hibernate二级缓存:Hibernate缓存Cache配置
- hibernate缓存:Hibernate获取数据方式和缓存Cache使用
- hibernate二级缓存:hibernate3 2级缓存Cache的配置及测试