hibernate一级缓存
一级缓存生命周期很短,它session的生命周期一致,一级缓存也叫session级的缓存,也称事务级缓存
哪些方法支持一级缓存?
*load
*get
*iterate查询实体对象支持一级缓存
一级缓存是缓存实体对象的
一级缓存如何管理?
* session.clear(),session.evict()
如何避免一次性打批量的实体数据插入后内存溢出
* 先flush,再clear
如果在现实工作中,遇到了大规模的数据,建议使用jdbc导入或数据库特定工具导入
hibernate二级缓存
二级缓存也称进程级缓存或SessionFactory级缓存,二级缓存可以被所有的session共享
二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存
二级缓存的配置和使用:
* 将ehcache.xml配置文件拷贝到src下
* 启用二级缓存,默认是启用的
<property name="hibernate.cache.use_second_level_cache">true</property>
* 指定缓存产品提供商,如:
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
* 指定哪些实体类使用二级缓存(两种方法)
* 在映射文件中指定
* 在hibernate.cfg.xml文件中指定
二级缓存是缓存实体对象的
hibernate查询缓存
查询缓存是缓存普通属性结果集的
对实体对象的结果集只缓存id
查询缓存的生命周期,当关联的表发生修改,那么查询缓存的生命周期结束
查询缓存的配置和使用:
* 在配置文件hibernate.cfg.xml中启用查询缓存,如:
<property name="hibernate.cache.use_query_cache">true</property>
* 在程序中必须手动启用查询缓存,如:
query.setCachable(true)
component映射
在hibernate中,component是实体对象的逻辑组成部分,它与实体对象的根本区别在于没有oid
采用component映射的好处:实现了对象模型的细粒度划分,层次分明,利于复用
复合主键映射(联合主键)
通常将复合主键相关的属性放到一个单独的类中,这个是有约束的:
* 必须实现序列化接口
* 必须复写hashCode和equals方法
lazy策略可以应用在:
* <class>标签上,可以取值true/false
* <property>标签上,可以取值true/false,需要类增强工具
* <set><list>集合标签上,可以取值true/false/extra
* <one-to-one>、<many-to-one>单端关联上,可以取值false/proxy/noproxy
lazy的概念:在正真使用的时候发出查询语句加载相应的对象
hibernate支持lazy策略只有在session打开状态下才有效
hibernate类级别的lazy只对普通属性起作用,可以控制什么时候加载这些普通属性
hibernate在集合上的lazy策略:可以取值true/false/extra
true:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载其
集合元素的数据
false:取消lazy特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据
extra:一种比较聪明的lazy策略,即调用集合的size等方法的时候,hibernate 并不会去
加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需
要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据
<class>标签上配置的lazy不会影响到集合上的lazy特性
hibernate在单端关联上的lazy策略可以取值:false/proxy/noproxy
false:取消lazy策略,即在加载对象的同时,发出查询语句,加载其关联对象
proxy:这是hibernate对单端关联的默认lazy策略,即只有在调用到其关联对象的方法的时候
才真正发出查询语句查询其对象数据,其关联对象是代理类
no-proxy:这种lazy特性需要对类进行增强,使用no-proxy,其关联对象不是代理类
<class>标签上配置的lazy不会影响到单端关联对象上的lazy特性
分享到:
相关推荐
### Hibernate缓存深入解析 #### 缓存的重要性与工作原理 缓存技术是提升系统性能的关键手段之一,尤其是在处理大量数据访问的应用程序中。通过减少对底层数据存储系统的直接访问频率,缓存能够显著加快数据读取...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
以上便是对Hibernate基础的概览,实际开发中,还需要深入了解实体关系映射、集合映射、级联操作、缓存机制、事务管理、性能优化等方面的知识,才能更好地利用Hibernate提升开发效率并保证应用程序的稳定运行。...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
### 马士兵Hibernate学习笔记知识点总结 #### 一、课程内容概览 - **HelloWorld**:通过简单的示例程序介绍如何启动一个基于Hibernate的Java项目。 - **Hibernate原理模拟**:解释O/R Mapping的概念及其重要性。 -...
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
《Hibernate入门:第一天笔记详解》 Hibernate,作为Java领域中著名的ORM(Object-Relational Mapping)框架,极大地简化了数据库操作,让开发者可以更加专注于业务逻辑而不是底层的数据访问。本文将基于第一天学习...
这篇文档和学习笔记将深入介绍Hibernate的核心概念、API用法以及最佳实践。 1. **Hibernate核心概念** - **对象关系映射(ORM)**: Hibernate是ORM的一种实现,它允许开发者使用面向对象的方式来操作数据库,而...
9. Hibernate缓存 Hibernate提供了缓存机制,包括一级缓存(Session级别的)和二级缓存(SessionFactory级别的)。缓存可以提高数据读取速度,减少数据库访问压力。 10. Hibernate性能优化 要提升Hibernate的性能...
Hibernate提供了缓存机制、批处理、延迟加载等优化手段,通过合理配置,可以在保证功能的同时提升系统的响应速度和资源利用率。 最后,补充话题可能包括对Hibernate最新特性的探索,如使用注解代替XML配置,以及与...
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...
**Hibernate 全部笔记** Hibernate 是一款开源的Java平台上的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式来处理数据库事务。本笔记将深入探讨Hibernate的核心概念、...
- **二级缓存**:利用Hibernate提供的二级缓存机制提高查询效率。 - **懒加载**:通过懒加载技术减少不必要的数据加载,提高应用程序的响应速度。 - **批量更新/删除**:利用批量操作减少与数据库的交互次数,...
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
9. 性能优化:最后,笔记会探讨一些Hibernate的性能优化技巧,如批处理、缓存策略、延迟加载的合理使用等,以提高应用程序的运行效率。 总之,《韩顺平.2011版.hibernate笔记》全面地介绍了Hibernate的各个方面,...
在深入探讨《hibernate笔记.txt》所提及的关键知识点前,我们先来解析一下标题和描述中的核心概念。“自上而下的依赖,单向依赖,层与层之间最好依赖抽象”,这一描述实际上触及了软件架构设计中的关键原则,特别是...
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
7. **缓存机制**:介绍Hibernate的缓存层次结构,包括一级缓存(Session缓存)和二级缓存,以及第三方缓存插件如 EhCache 的集成。 8. **性能优化**:讨论如何优化Hibernate的性能,如批处理、延迟加载策略、查询...