hibernate有4个级别的缓存策略:
1.只读缓存 : 数据进入缓存后数据不再改变
2.读写缓存:不太明白,大概的意思是更新数据后缓存也要重写 可以防止脏读
3.非严格读写缓存 :跟2类似吧 只是不需要考虑并发 可以接受脏读
4.事务缓存:可以避免并发导致的脏读
我配置了一个<cache usage="transactional"/> 好像是根本没有缓存数据

关于集合属性的缓存 :
如有这样一个关系:两个域对象 Question 和 QuestionOption 为 1:N关系
要缓存question id为1的选项questionOptions 这个集合属性
正确的做法是
<set name="questionOptions" ....>
    <cache usage="read-write" />
    ......
</set>

而不是在QuestionOption.hbm.xml中添加 <cache usage="read-write" />
为什么这样呢 ? 我的推测是第一种情况实际上是用的查询缓存 添加后相当于query.setCachable(true);
而第二种是配置的二级缓存
评论
发表评论

您还没有登录,请登录后发表评论

xly_971223
搜索本博客
博客分类
我的相册
C5b0e206-307c-3f61-aa60-9cfd71c61bb3-thumb
u=3528569133,1587051000&gp=38.jpg
共 2 张
最近加入圈子
存档
最新评论