`

hibernate 缓存 笔记

阅读更多

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 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    Hibernate学习笔记特别详细

    以上便是对Hibernate基础的概览,实际开发中,还需要深入了解实体关系映射、集合映射、级联操作、缓存机制、事务管理、性能优化等方面的知识,才能更好地利用Hibernate提升开发效率并保证应用程序的稳定运行。...

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    马士兵hibernate学习笔记(原版)

    《马士兵Hibernate学习笔记》是一份深入浅出的教程,旨在帮助初学者掌握Hibernate这一流行的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而减少了传统...

    hibernate第一天笔记

    《Hibernate入门:第一天笔记详解》 Hibernate,作为Java领域中著名的ORM(Object-Relational Mapping)框架,极大地简化了数据库操作,让开发者可以更加专注于业务逻辑而不是底层的数据访问。本文将基于第一天学习...

    hibernate API帮助文档 及hibernate学习笔记

    这篇文档和学习笔记将深入介绍Hibernate的核心概念、API用法以及最佳实践。 1. **Hibernate核心概念** - **对象关系映射(ORM)**: Hibernate是ORM的一种实现,它允许开发者使用面向对象的方式来操作数据库,而...

    hibernate学习笔记_北大青鸟课堂笔记全文

    9. Hibernate缓存 Hibernate提供了缓存机制,包括一级缓存(Session级别的)和二级缓存(SessionFactory级别的)。缓存可以提高数据读取速度,减少数据库访问压力。 10. Hibernate性能优化 要提升Hibernate的性能...

    hibernate学习笔记mashibing

    Hibernate提供了缓存机制、批处理、延迟加载等优化手段,通过合理配置,可以在保证功能的同时提升系统的响应速度和资源利用率。 最后,补充话题可能包括对Hibernate最新特性的探索,如使用注解代替XML配置,以及与...

    Hibernate学习笔记和资料

    hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...

    Hibernate全部笔记

    **Hibernate 全部笔记** Hibernate 是一款开源的Java平台上的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式来处理数据库事务。本笔记将深入探讨Hibernate的核心概念、...

    马士兵java框架hibernate学习笔记

    - **二级缓存**:利用Hibernate提供的二级缓存机制提高查询效率。 - **懒加载**:通过懒加载技术减少不必要的数据加载,提高应用程序的响应速度。 - **批量更新/删除**:利用批量操作减少与数据库的交互次数,...

    hibernate学习笔记第二天的源码

    在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...

    韩顺平.2011版.hibernate笔记.zip

    9. 性能优化:最后,笔记会探讨一些Hibernate的性能优化技巧,如批处理、缓存策略、延迟加载的合理使用等,以提高应用程序的运行效率。 总之,《韩顺平.2011版.hibernate笔记》全面地介绍了Hibernate的各个方面,...

    hibernate笔记.txt

    在深入探讨《hibernate笔记.txt》所提及的关键知识点前,我们先来解析一下标题和描述中的核心概念。“自上而下的依赖,单向依赖,层与层之间最好依赖抽象”,这一描述实际上触及了软件架构设计中的关键原则,特别是...

    hibernate学习笔记文档

    ### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...

    韩顺平Hibernate笔记

    7. **缓存机制**:介绍Hibernate的缓存层次结构,包括一级缓存(Session缓存)和二级缓存,以及第三方缓存插件如 EhCache 的集成。 8. **性能优化**:讨论如何优化Hibernate的性能,如批处理、延迟加载策略、查询...

Global site tag (gtag.js) - Google Analytics