`
wkkyo
  • 浏览: 30736 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Hibernate缓存学习笔记

    博客分类:
  • Java
阅读更多

 

Hibernate在进行数据读取时会先在缓存里找,缓存中不存在时再去数据库查询,合理使用hibernate缓存能够有效的利用内存,减少物理数据库调用的次数.

 

ORM缓存策略

1.事务级缓存(session level cache)

session生命周期的缓存,关闭session即消亡

2.应用级/进程级缓存(sessionFactory level cache)

某个应用中的共享缓存,多个事务可以共享,在sessionFactory层实现,所有sessionFactory创建的session可以共享.

3.分布式缓存

多个JVM共享的缓存,通过远程机制实现缓存数据同步,任意实例修改数据,所有的JVM都要更新缓存.

 

Hibernate数据缓存

1.内部缓存(session level)一级缓存

是事务级的缓存,session中维护的一个Map,Map的key是包含了数据类型和id,从数据库加载的数据都会进入Map缓存中,通过session加载数据时会先在session缓存里找,一级缓存是session的private数据,session实例消亡就清除了,在应用中就保持在一次请求的开始和结束之间.

一般由Hibernate自动维护,也支持手动维护

session.evit(Object obj) 将持久化对象从一级缓存中清除.

session.clear()  清空一级缓存

session.contains(Object obj) 判断指定的对象是否存在于一级缓存中. 

session.flush() 刷新一级缓存区的内容,使缓存与数据库数据保持同步. 

 

2.二级缓存(sessionFactory level)

包含了应用级和分布式的缓存,由本sessionFactory的所有session实例共享,session操作时会先查一级缓存,然后查二级缓存,最后再查物理数据库.要使用二级缓存必须要进行配置.

 

适合用缓存的数据

1.不会被其他应用修改

包括直接用JDBC修改等,因为其他应用修改了数据之后hibernate并不知道,不能自动更新缓存,不过可以手动更新缓存

2.数据大小可以接受,毕竟内存资源也不多

3.数据更新频率低(比如数据字典等常量数据)

4.可能被系统频繁使用

5.非关键的数据

6.不会被并发访问的数据

 

常用的二级缓存插件

EHCache  org.hibernate.cache.EhCacheProvider 

OSCache  org.hibernate.cache.OSCacheProvider 

SwarmCahe  org.hibernate.cache.SwarmCacheProvider 提供了分布式

JBossCache  org.hibernate.cache.TreeCacheProvider 提供了分布式

 

EHCache二级缓存配置方法

1.启用二级缓存首先要在hibernate.cfg.xml配置

<hibernate-configuration>  
   <session-factory>  
      <!-- 配置二级缓存插件EHCache的Provider类-->  
      <property name="hibernate.cache.provider_class">  
         org.hibernate.cache.EhCacheProvider  
      </property>  
      <!-- 启动"查询缓存" -->  
      <property name="hibernate.cache.use_query_cache">  
         true  
      </property>  
   </session-factory>  
 </hibernate-configuration>

 

 

2.然后配置cache的配置文件ehcache.xml

 

<ehcache>  
  <!-- maxElementsInMemory为缓存对象的最大数目,
	eternal设置是否永远不过期,
	timeToIdleSeconds对象处于空闲状态的最多秒数,
	timeToLiveSeconds对象处于缓存状态的最多秒数,
	overflowtodisk内存不足时是否启用磁盘缓存 -->  
  <diskStore path="java.io.tmpdir"/>  
  <defaultCache maxElementsInMemory="10000" eternal="false"  timeToIdleSeconds="300"            timeToLiveSeconds="600" overflowToDisk="true"/>
</ehcache>
 

 

3.最后要在映射文件***.hbm.xml中指定实体的缓存同步策略

<?xml version="1.0" encoding='UTF-8'?>  
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >  
<hibernate-mapping>  
   <class>  
       <!-- 设置该持久化类的二级缓存并发访问策略-->  
       <cache usage="read-write"/>
	<set name = "xxx">
		<cache usage="read-only" />
   	</set>
   </class>
</hibernate-mapping>

 

 

hibernate提供的缓存同步策略,可以在usage中设置

read-only

只读

nonstrict-read-write

更新频率不高

read-write

严格可读写

transactional(Ecache不支持)

事务型缓存

 

 

 

 

分享到:
评论

相关推荐

    Hibernate学习笔记整理

    Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    hibernate个人学习笔记完整版

    【hibernate个人学习笔记完整版】是一份详尽的资料,涵盖了Hibernate框架的基础到高级应用,旨在帮助学习者深入理解和掌握这一强大的Java对象关系映射(ORM)工具。Hibernate作为Java开发中的主流ORM框架,它极大地...

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    Hibernate3 学习笔记.ppt

    【一、O/R Mapping】 O/R Mapping,即对象关系映射,是将对象模型与关系数据库之间进行映射的技术。在Hibernate中,O/R Mapping允许开发者以面向对象的方式...学习和掌握Hibernate有助于提升Java应用的数据管理能力。

    Hibernate3.2学习笔记

    《Hibernate3.2学习笔记详解》 在Java开发中,ORM(Object-Relational Mapping)框架如Hibernate极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层的数据存取。本篇学习笔记将深入探讨Hibernate...

    传智播客2016hibernate框架学习笔记

    《传智播客2016 Hibernate框架学习笔记》是一份详实的教程,旨在帮助初学者和进阶者深入理解和掌握Hibernate框架。该资源包含了四天的学习内容,分别是day01、day02、day03和day04,涵盖了从基础到高级的多个主题。...

    hibernate框架学习笔记整理

    ### hibernate框架学习笔记整理 #### 一、Hibernate框架简介 **Hibernate框架**是一种用于Java应用的**对象关系映射**(Object-Relational Mapping, ORM)解决方案,它允许开发者使用面向对象的方式操作数据库中的表...

    Hibernate Annotation 学习笔记

    《Hibernate Annotation 学习笔记》 在Java的持久化框架中,Hibernate以其强大的功能和易用性成为开发者首选之一。而Hibernate Annotation则是Hibernate提供的一种基于注解的实体映射方式,它极大地简化了传统XML...

    hibernate 3.3学习笔记

    **hibernate 3.3学习笔记** 在深入探讨Hibernate 3.3的学习笔记之前,首先需要理解Hibernate是什么。Hibernate是一个强大的开源Java持久化框架,它简化了数据库操作,允许开发者将精力集中在业务逻辑上而不是数据库...

    hibernate-学习笔记

    【hibernate-学习笔记】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中管理关系数据库数据的便捷方式。本学习笔记将深入探讨Hibernate的核心概念、配置、实体映射、查询...

    邹波老师Hibernate教程学习笔记

    《邹波老师Hibernate教程学习笔记》是针对Java开发者深入理解并掌握ORM框架Hibernate的重要参考资料。这是一份由个人在观看邹波老师的Hibernate视频教程后精心整理的学习笔记,旨在帮助初学者和有一定基础的程序员更...

    hibernate入门学习笔记+源码

    **hibernate入门学习笔记+源码** **一、Hibernate简介** Hibernate是一个开源的对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。通过提供对象化的数据访问方式,Hibernate消除了传统JDBC代码中的...

    Hibernate4学习笔记1

    在这个学习笔记中,我们将深入探讨Hibernate4的二级缓存机制、访问策略以及一些主要的新特性。 **1. 二级缓存分类** Hibernate的二级缓存将不同类型的实体分开存储,这有助于优化性能和内存管理: - **单个实体**...

    hibernate框架开发2016版视频 四天学习笔记完整版

    【hibernate框架开发2016版视频 四天学习笔记完整版】 在软件开发领域,特别是Java Web开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者可以更专注于业务逻辑而不是...

    Hibernate+学习笔记

    【Hibernate 学习笔记】 Hibernate 是一款开源的对象关系映射(ORM)框架,它为 Java 开发者提供了在关系数据库和面向对象编程之间的一个抽象层。这个框架使得开发者可以使用面向对象的方式来操作数据库,而无需...

    Hibernate学习笔记与总结

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

    Hibernate 4 学习笔记

    **标题:** Hibernate 4 学习笔记 **概述:** Hibernate 4 是一个流行的Java对象关系映射(ORM)框架,它允许开发人员在Java应用中处理数据库操作,而无需直接编写SQL语句。这个学习笔记将深入探讨Hibernate 4的核心...

    hibernate 个人学习笔记及代码

    通过深入学习和实践这个“hibernate 个人学习笔记及代码”包,初学者可以掌握Hibernate的基础知识和实战技能,为Java开发中的数据库操作打下坚实基础。在学习过程中,建议结合实际项目进行练习,以便更好地理解和...

    Hibernate3学习笔记(一)-hibernate概述和简单实例入门

    “Hibernate3学习笔记(一)-hibernate概述和简单实例入门” 这个标题表明了本文档将介绍的是关于Hibernate3的基本概念和初步应用。Hibernate3是Java开发中的一个流行对象关系映射(ORM)框架,它简化了数据库操作,将...

Global site tag (gtag.js) - Google Analytics