Hibernate二级缓存

二级缓存也称进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享,二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存。Hibernate二级缓存也是缓存实体对象的,也叫Entity级二级缓存。 
我认为二级缓存是对一级缓存的补充,还是get(),save(),load(),iterate(查询实体对象)方法支持二级缓存。无论list,load还是iterate,只要读出一个对象,都会填充缓存。list会向缓存中放入数据,而不利用缓存中的数据,而iterate会先取数据库select id出来,然后一个id一个id的load,如果在缓存里面有,就从缓存取,没有的话就去数据库load。 在默认情况下iterate利用缓存数据,但如果缓存中不存在数据有可以能出现N+1问题 

 

配置二级缓存的详细步骤:

 

1、 加入jar包 ehcache.jar .

2、在应用中应用缓存,需要在hibernate.hbm.xml中配置,

 

 

 

3、加入 ehcache.xml文件配置缓存的参数。

 

 

 

4、设置持久化对象的缓存策略。

 

 

5、编辑测试类。

 

 

6、运行结果:

 

 

Hibernate: 

    select

        card0_.ID as ID4_0_,

        card0_.PERSON_ID as PERSON2_4_0_,

        card0_.CARDNUMBER as CARDNUMBER4_0_ 

    from

        ZM.CARD card0_ 

    where

        card0_.ID=?

com.pojo.Card@1d2b01b

-------------------------------------------------------------------

false

com.pojo.Card@8ab708

根据运行结果可以看出,两个不同的session,而查询却只执行了一次sql语句,说明第二次的查询是从缓存中获取的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值