分为两级:session级别(一级缓存)、sessionFactory 二级缓存
session缓存,必须在同一个session中,如果session关闭,缓存就丢失了。缓存级别比较短暂。
save,update,saveOrUpdate,load,get,list,iterator ,lock操作后,对象都会放在一级缓存中。
get,load,query iterator可以从一级缓存中取数据。
手工清除一级缓存:
session.evict(object); 清除单个缓存。
session.clear()方法清除所有缓存
二级缓存:
依赖第三方的实现,ehchache,oscache,jbosschache。
1.配置使用二级缓存
cache.use_second_level_cache = true 默认是使用二级缓存的。
cache.provider_class 设置缓存提供类
配置oscache 或 ehcache配置文件。
2.配置哪些类需要使用二级缓存
通过配置文件声明缓存类
在hbm.xml中声明缓存。<cache usage="read-write"/>
3.配置缓存策略
read-only: 只读,永远不能修改,如果修改,报异常。效率较高
read-write:读写,能够保证并发情况下,不出错。进行加锁,保证同步。效率低
nostrict-read-write 不严格的读写,比read-write效率高
transaction:回滚缓存中的对象,目前只有jboss实现了。
hibernate.generate_statistics = true 打开统计信息。默认关闭。打开后会影响性能。
通过 sessinFactory.getStatistics() 获取统计信息。
native的主键生成策略,在save时不会存入二级缓存,需要一次查询。
hilo生成策略,当save时后将对象就直接保存到二级缓存了。
update,saveorUpdate,list,iterator,get,load,query,criteria会将对象填入二级缓存
get,load,iterator 会从二级缓存中取得对象。
手工清除二级缓存
sessionFactory.evict(Object.class) 清除指定类型的二级缓存。
sessionFactory.evict(Object.class,id);清除单挑对象
查询缓存:
cache.use_query_cache = ture,默认关闭
query.setCacheable(true);
查询缓存结构:
key,(Integer)ids,缓存中存储的是对象的Id,真正的对象存储到一级、二级缓存。这样做可以减少缓存存储空间。
当查询的时候,首先从二级缓存中取得ids,在循环,根据id,调用session.get方法进行查询,最理想的情况下,所有的对象都命中,这样就不会发生查询语句,最不理想的情况,出现N+1。
分布式缓存
传播通知更新缓存
缺点:更新数据成本很高
中央缓存
单独一台缓存服务器
缺点:获取数据的成本比较高
使用缓存条件
1.读取次数大于更新次数
2.数据量不能太大
3.对数据要有独享控制
4.可以容忍无效的数据
分享到:
相关推荐
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。
《马士兵Hibernate学习笔记》是一份深入浅出的教程,旨在帮助初学者掌握Hibernate这一流行的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而减少了传统...
**Hibernate学习笔记** Hibernate是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。本笔记将深入探讨Hibernate的核心概念、配置、实体管理、查询语言以及最佳实践...
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
在 Hibernate 中,对象有三种状态:瞬时对象(Transient Object)、持久对象(Persist Object)和离线对象(Detached Object)。瞬时对象未被 Session 管理,且在数据库中无对应记录。持久对象在数据库中有记录,并...
在本篇“Hibernate学习笔记(三)”中,我们将深入探讨Hibernate这一强大的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式处理数据库操作,极大地简化了Java应用程序与...
**Hibernate学习笔记源码及文档** Hibernate 是一款强大的Java持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库交互。本资源包含了Hibernate的学习笔记、源码分析以及开发流程说明文档...
【hibernate学习笔记_北大青鸟课堂笔记全文】 Hibernate是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了便捷的数据持久化方案。在Java应用中,尤其是在企业级开发中,它扮演着至关重要的角色,使得我们...
### 马士兵Hibernate学习笔记知识点总结 #### 一、HelloWorld示例 - **目的**:通过简单的示例理解Hibernate的基本使用流程。 - **步骤**: - 创建Java项目`hibernate_0100_HelloWorld`。 - 建立库依赖,包括...
**hibernate学习笔记第四天源码解析** 在hibernate学习的过程中,第四天通常会深入探讨实体类、映射文件、配置文件以及查询语言等方面的内容。这些是hibernate框架的基础,也是开发者掌握持久化操作的关键。让我们...
### 马士兵Java框架Hibernate学习笔记 #### 一、HelloWorld - **知识点概述**: - **项目搭建**:介绍了如何从零开始搭建一个简单的Hibernate项目。 - **环境配置**:包括了如何配置MySQL数据库、创建必要的表...