Hibernate缓存机制

缓存:为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。

缓存的工作原理:

物理数据源——>(数据)缓存——>(数据)内存

在应用程序中首先会选择在缓存中读取数据,如果缓存中没有再选择在数据库中读取并把读取的数据放到缓存中;有点类似寄存器。

在Hibernate中使用不同的Session对象进行数据库操作,他们之间不能共享同一个缓存;也就是不同的Session对象多次查询同一个对象是会产生多条查询语句。

Hibernate一级缓存:

1.一级缓存有成为Session缓存,会话缓存;

2.通过Session对象从数据库中查询实体,会把实体在内存中存储起来,下一次查询该实体时,直接从内存中读取;

3.一级缓存的声明周期和Session对象的生命周期相同;

4.一级缓存中的数据适用于当前缓存中;

一级缓存无法取消,可以用两个方法进行管理:

1.evict():用于将某个对象从Session的一级缓存中清除;

2.clear():用于将一级缓存中的所有对象全部清除;

在查询的时候有时也不会使用缓存如:

Query query=session.CreateQuery("*******");

query.list():不会使用缓存,query.iterate():会使用缓存;

二级缓存:

二级缓存也称为全局缓存,在所有的Session的对象都会共享一个缓存;

二级缓存的配置步骤:

1.添加二级缓存的Jar包;

2.在hibernate的配置文件中添加provide类的描述:

<!-- 指定二级缓存的外部实现类 -->
    <property name="cache.provider_class">net.sf.encache.hibernate.EhCacheProvider</property>

3.添加encache.xml到项目中;

4.在需要被缓存的表的映射文件添加<cache>标签

二级缓存的适应数据:

很少被修改的、不重要、参考数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值