Hibernate 缓存机制全面讲解

                       

简介

为了降低应用程序访问我们的数据的时候的频率,提高数据读取的速率。比如计算机中为了缓解CPU和内存之间速度差异而引入的缓存是一样的道理。Hibernate同样对缓存进行了支持,使得程序的运行效率得到了提高。
在Hibernate中,同一个session查询同一个数据时如果发现命中,就只会向数据库发送一条sql命令。不同的session会发送多次sql命令。

一级缓存

Hibernate一级缓存又称之为”Session缓存”,”会话期缓存”,顾名思义就是在会话期才会执行的缓存机制。一种轻量级的实现。session销毁时跟随销毁。

 

通过session从数据库查询实体时会把实体在内存中存储起来,下一次查询同一个实体时就不会再从数据库中获取了,而是从内存中获取此数据,大大的提高了数据获取的速度!

一级缓存的特点:
- 一级缓存无法撤销,而且是被强制执行的。
- 相关的API:
    - evict():用于将某个对象从Session的一级缓存中清除
    - clear():用于将一级缓存中的所有的对象全部清除

二级缓存

二级缓存的出现就是为了弥补一级缓存的生存期局限于session的生存期内,便于其他的session也能时用到缓存中的数据。即每个session都会共享的缓存,这就是Hibernate的二级缓存机制。

二级缓存默认不开启,所以需要手动的进行配置才行,步骤如下:

  • 添加二级缓存的对应的jar包:commons-logging.jar,ehcache.jar
  • 在Hibernate的配置文件中添加Provider类的描述:
    net.sf.ehcache.hibernate.EhCacheProvider
  • 添加二级缓存的属性配置文件:在hibernate-release-5.1.0.Final\hibernate-ehcache\ehcache.xml目录下可以找到,放到src目录下即可。
  • 在需要被缓存的表所对应的映射文件中添加标签。注意usage属性值的选择即可。

二者之间的区别

二级缓存: 其被称之为“全局缓存”,可供应用中所有的session共享缓存内容。是可插拔式的缓存,默认是EHCache,还可以支持其他的缓存组件,如Hashtable,OSCache,JBoss TreeCache等等。

在通常情况下将具有一下特征的数据会放到二级缓存中:

  • 很少被修改的数据
  • 不是很重要的数据,允许出现偶尔并发的数据
  • 不会被并发访问的数据
  • 参考性质的数据(字典表,码值表)

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/gfdfhjj/article/details/86643728