java面试题网

普通会员

217

帖子

75

回复

160

积分

楼主
发表于 2019-05-05 18:04:33 | 查看: 5532| 回复: 1

介绍一下Hibernate的缓存

介绍一下Hibernate的缓存

一、why(为什么要用Hibernate缓存?)

Hibernate是一种持久化层框架,经常访问物理数据库。

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

缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。

为了提高访问速度,把磁盘或者数据库访问变成内存访问

二、what(Hibernate缓存原理是怎样的?)

Hibernate缓存包括两大类:Hibernate 一级缓存和Hibernate二级缓存

1. Hibernate一级缓存又称为”session的缓存”。

session缓存内置不能被卸载,session的缓存是事务范围的缓存(session对象的生命周期通常对应一个数据库事务或者一个应用事务)。

一级缓存中,持久化类的每个实例都具有唯一的OID

2. Hibernate的二级缓存又称为”sessionFactory的缓存”。

由于sessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。

第二级缓存是可选的,是一个可配置的插件,默认下sessionFactory不会启用这个插件。

什么样的数据适合存放到二级缓存中?

1) 很少被修改的数据 (帖子的最后回复时间)

2) 经常被查询的数据 (电商的地点)

3) 不是很重要的数据,允许出现偶尔并发的数据

4) 不会被并发访问的数据

5) 常量数据

扩展:Hibernate的二级缓存默认是不支持分布式缓存的,使用memcache,redis等中央缓存来代替二级缓存。


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/735_1_1.html


java面试题交流群:327440556      阿里云产品2000元通用优惠券限时领


普通会员

115

帖子

83

回复

169

积分
沙发
发表于 2019-09-27 12:06:18

hibernate的缓存机制
Hibernate缓存分为两层:Hibernate的一级缓存和Hibernate二级缓存。
1.Hibernate一级缓存(Session的缓存):
(1)Session实现了第一级Cache,属于事务级数据缓冲。一旦事务结束,缓存随之失效。一个Session的生命周期
对应一个数据库事务或一个程序事务。
(2)Session-Cache总是被打开并且不能被关闭的。
(3)Session-Cache保证一个Session中两次请求同一个对象时,取得的对象是同一个Java实例,有时它可以避免
不必要的数据冲突。
a.在对于同一个对象进行循环引用时,不至于产生堆栈溢出。
b.当数据库事务结束时,对于同一数据表行,不会产生数据冲突。因为对于数据库中的一行,最多有一个对象来表
示它。
c.一个事务中可能会有很多个处理单元,在每一个处理单元中做的操作都会立即被其他的数据单元得知。
2.Hibernate二级缓存(SessionFactory的缓存):
(1)二级缓存是SessionFactory范围内的缓存,所有的 Session共享同一个二级缓存。在二级缓存中保存持久化实
例的散装形式的数据。
(2)持久化不同的数据需要不同的Cache策略,比如一些因素将影响Cache策略的选择:数据的读/写比例、数据表
是否能被其他的应用程序所访问等。
(3)设置Hibernate二级缓存需要分两步:首先,确认使用什么数据并发策略。然后,配置缓存过期时间并设置Cache
提供器。 

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018