Hibernate的一级缓存

Hibernate的一级缓存

HIbernate是支持一级缓存。所谓的一级缓存就是Session级别的缓存。

意思就是说,同一个session查询同样的数据,只查询一次数据库。如果出现同多次同样的查询(get/load)
直接返回缓存的数据。

作用:缓存的作用:就是减少查询的次数,从而提高查询的效率!!!!

image

默认情况就支持一级缓存

如果支持缓存,get四次数据库,只查一次。

@Test
public void get(){
    //1.获得操作对象
    Session session = HibernateUtils.getSession();
    //通过OID获得对应的记录
    //如果支持缓存,get四次数据库,只查一次。
    Customer customer1 = session.get(Customer.class,1L);
    System.out.println(customer1.getCustName());
    Customer customer2 = session.get(Customer.class,1L);
    System.out.println(customer2.getCustName());
    Customer customer3 = session.get(Customer.class,1L);
    System.out.println(customer3.getCustName());
    Customer customer4 = session.get(Customer.class,1L);
    System.out.println(customer4.getCustName());

    session.close();
}

因为使用了缓存

清空缓存的方法

清空缓存的三个方法。
1. 关闭 close()
2. 清空 clear()
3. 清空指定的实体态对象 evit()

public void get(){
    //1.获得操作对象
    Session session = HibernateUtils.getSession();
    //通过OID获得对应的记录

    //如果支持缓存,get四次数据库,只查一次。
    Customer customer1 = session.get(Customer.class,1L);
    System.out.println(customer1.getCustName());
    //如果clear()清空同一个session的所有持久化对象,缓存被清空
    session.clear();

    Customer customer2 = session.get(Customer.class,1L);
    System.out.println(customer2.getCustName());
    //evict()清空指定的持久化对象,该对象的缓存被清空
    session.evict(customer2);

    Customer customer3 = session.get(Customer.class,1L);
    session.clear();//先清除缓存,只是把持久态转成游离态而已,并没有清空数据
    System.out.println(customer3.getCustName());


    Customer customer4 = session.get(Customer.class,1L);
    System.out.println(customer3.getCustName());
    Customer customer5 = session.get(Customer.class,1L);
    System.out.println(customer4.getCustName());
    //表示关闭了session。session的所有缓存被清空
    session.close();

}

注意,close,clear,evit清空缓存只是将持久态转成游离态,清空的是数据和数据库的关联,而不是清空数据。

缓存的作用:就是减少查询的次数,从而提高查询的效率!!!!


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值