Hibernate数据缓存

Hibernate数据缓存分为两个层次,可分为内部缓存(Session Level)和二级缓存(SessionFactory Level)

在Hibernate中,缓存在以下情况下发挥作用:

1、通过id(主键)加载数据

包括根据id查询数据的Session.load方法等。

2、延迟加载

所谓延迟加载就是在需要数据的时候,才真正执行数据的加载操作。HIbernate2的延迟加载主要针对实体对象

和集合。Hibernate3提供了属性的延迟加载功能。

内部缓存

内部缓存在Hibernate中有称为一级缓存,属于应用事务级缓存。Session在内部维护了一个Map数据类型,此数据

类型中保持了所有的与当前Session相关联的数据对象,这个Map数据结构中维护了当前Session中所有持久化类的

状态。如果我们需要通过Session加载某个数据对象,Session首先会根据所要加载的数据类和id,在entityByKey(内

部的一个Map对象)中寻找是否已有此数据的缓存实现,如果存在且其判定为有效,则以此数据实例作为结果返回。

同样,如果Session从数据库中加载了数据,也会将其纳入Map结构加以管理。

二级缓存

二级缓存将由从属本SessionFactory的所有Session实例共享,因此有时被称为SessionFactory Level Cache。

Session在进行数据查询操作时,会首先在自身内部的一级缓存进行查找,如果一级缓存未能命中,则在二级缓存中

查找,如果二级缓存中命中,则以此数据作为结果返回。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值