java面试题网

普通会员

217

帖子

75

回复

160

积分

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

介绍一下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面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018