用户登录
用户注册

分享至

hibernate缓存机制集合

  • 作者: 何小乖不乖
  • 来源: 51数据库
  • 2021-01-29
为了提高系统性能,hibernate也使用了缓存机制。在hibernate框架中,主要包含两个方面的缓存,一级缓存和二级缓存。hibernate缓存的作用主要表现在以下两个方面: 1) 通过主键(ID)加载数据的时候 .2) 延迟加载中。


 一级缓存:hibernate的一级缓存是由session提供的,因此它只存在session的生命周期中。也就是说session关闭的时候该
session所管理的一级缓存也随之被清除。hibernate的一级缓存是session所内置的,默认开启,不能被卸载,也不能进行任何配置。在缓
存中的对象,具有持久性,session对象负责管理.一级缓存的优点是使用同一个session对象多次查询同一个数据对象,仅对数据库查询一次。一级
缓存采用的是Key-Value的MAP方式来实现的。在缓存实体对象时,对象的主关键字ID是MAP的Key,实体对象就是对象的值。所以说一级缓存是
以实体对象为单位进行存储的。访问的时候使用的是主键关键字ID。一级缓存使用的是自动维护的功能。但可以通过session提供的手动方法对一级缓存的
管理进行手动干预。evict()方法用于将某个对象从session的一级缓存中清除。clear()方法用于将session缓存中的方法全部清除。

 二级缓存:二级缓存的实现原理与一级缓存是一样的。也是通过Key-Value的Map来实现对对象的缓存。二级缓存是作用在
SessionFactory范围内的。因此它它可被所有的Session对象所共享。需要注意的是放入缓存中的数据不能有第三方的应用对数据进行修改。

 二级缓存默认关闭,需要程序员手动开启。首先导入ehcache.jar二级缓存包。然后,在src下添加ehcache.xml配置,同时,在
hibernate.cfg.xml中启用二级缓存
true

net.sf.ehcache.hibernate.EhCacheProvider
。第三:指定使用二级缓存缓存哪
种类型的对象,在hbm.xml中添加



  hibernate的缓存包括session的缓存和sessionfactory的缓存,其中sessionfactory的缓存又可以分为两类:内置缓存和外置缓存。session的缓存是内置的,不能被卸载,也被称为hibernate的第一级缓存。sessionfactory的内置缓存和session的缓存在实现方式上比较相似,前者是sessionfactory对象的一些集合属性包含的数据,后者是指session的一些集合属性包含的数据。sessionfactory的内置缓存中存放了映射元数据和预定义sql语句,映射元数据是映射文件中数据的拷贝,而预定义sql语句是在hibernate初始化阶段根据映射元数据推导出来,sessionfactory的内置缓存是只读的,应用程序不能修改缓存中的映射元数据和预定义sql语句,因此sessionfactory不需要进行内置缓存与映射文件的同步。sessionfactory的外置缓存是一个可配置的插件。在默认情况下,sessionfactory不会启用这个插件。外置缓存的数据是数据库数据的拷贝,外置缓存的介质可以是内存或者硬盘。sessionfactory的外置缓存也被称为hibernate的第二级缓存。
软件
前端设计
程序设计
Java相关