- 浏览: 1351847 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
http://www.cnblogs.com/ksyou/archive/2009/04/02/1428045.html
1.一级缓存: session (似乎共用的一个session,但好象又不是)
2.二级缓存: ehcache1.6
二级缓存是缓存实体对象的
开启二级缓存,修改hibernate.cfg.xml文件
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
<hibernate-mapping>
<class name="com.model.User" table="user" catalog="zhangwei" dynamic-update="true">
<meta attribute="implement-equals">true</meta>
<cache usage="read-only"/>
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
...
或者: <class-cache class="com.bjsxt.hibernate.Student" usage="read-only" include="all" />
-----------------------
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.use_second_level_cache">false</property> 设置这个每次都会从数据库查询。
多个session共用二级缓存:
1.如果一个session用load()方法加载一个对象,只有配置了二级缓存,其它的session用load()方法加载时,不从数据库查询,而从二级缓存中查询.(get()方法也是先从二级缓存查询)
2.管理二级缓存: HibernateSessionFactory.getSessionFactory().evict(User.class,1);
3.没有设置use_query_cache=true,list()方法每次都会从数据库查询,只加入hibernate.cache.provider_class
还有<cache usage="read-only"/>,list()方法还是输出了sql语句.
4.只向二级缓存写数据,而不从二级缓存读数据
session.setCacheMode(CacheMode.PUT);
5.仅向二级缓存读数据,而不向二级缓存写数据
session.setCacheMode(CacheMode.GET);
6.配置二级缓存,没有配置查询缓存use_query_cache=true,发现iterator()方法先从二级缓存取对象,如果二级缓存没有需要的对象,就从数据库查询.
7.list()方法,不管有没有配二级缓存,都会从数据库查询.
8.如果查询需要强行刷新其查询缓存区域,那么你应该调用Query.setCacheMode(CacheMode.REFRESH)
方法
9.使用查询缓存,需要在Query的后面加.setCacheable(true),当参数相同,赋值也相同时才能从二级缓存中查询.所有的Query查询都适用.(list()也加下.setCacheable(true))也能从二级缓存中查询.
查询的结果集也可以被缓存。只有当经常使用同样的参数进行查询时,这才会有些用处。 要使用查询缓存,首先你必须打开它:
hibernate.cache.use_query_cache true
该设置将会创建两个缓存区域 - 一个用于保存查询结果集(org.hibernate.cache.StandardQueryCache
); 另一个则用于保存最近查询的一系列表的时间戳(org.hibernate.cache.UpdateTimestampsCache
)。 请注意:在查询缓存中,它并不缓存结果集中所包含的实体的确切状态;它只缓存这些实体的标识符属性的值、以及各值类型的结果。 所以查询缓存通常会和二级缓存一起使用。
绝大多数的查询并不能从查询缓存中受益,所以Hibernate默认是不进行查询缓存的。如若需要进行缓存,请调用 Query.setCacheable(true)
方法。这个调用会让查询在执行过程中时先从缓存中查找结果, 并将自己的结果集放到缓存中去。
如果你要对查询缓存的失效政策进行精确的控制,你必须调用Query.setCacheRegion()
方法, 为每个查询指定其命名的缓存区域。
List blogs = sess.createQuery("from Blog blog where blog.blogger = :blogger") .setEntity("blogger", blogger) .setMaxResults(15) .setCacheable(true) .setCacheRegion("frontpages") .list();
如果查询需要强行刷新其查询缓存区域,那么你应该调用Query.setCacheMode(CacheMode.REFRESH)
方法。 这对在其他进程中修改底层数据(例如,不通过Hibernate修改数据),或对那些需要选择性更新特定查询结果集的情况特别有用。 这是对SessionFactory.evictQueries()
的更为有效的替代方案,同样可以清除查询缓存区域。
- hiberbate3-cache.rar (772.5 KB)
- 下载次数: 17
发表评论
-
hibernate Search
2010-10-15 10:09 1435hibernate Search 使用过lucene的人都 ... -
org.hibernate.LazyInitializationException: could not initialize proxy - no Sessi
2010-09-10 15:57 20491.设置里 lazy = "false" ... -
Hibernate数据检索策略
2010-08-09 08:52 1253Hibernate数据检索策略: Hiberna ... -
Java、hibernate、sql类型对照
2010-08-09 08:48 1528基本值类型: Java基本类型、对应的Hibernate映射 ... -
Hibernate事务隔离级别
2010-08-09 08:46 6302Hibernate事务隔离级别: 隔离级别 ... -
Hibernate数据检索策略
2010-08-06 15:58 1374Hibernate数据检索策略:Hibernate的数据检索策 ... -
生成model类的serialVersionUID
2010-06-25 16:36 1152生成model类的serialVersionUID: 在命令 ... -
spring 与 hibernate Annotation配置(entry)
2010-06-13 16:53 2071(5)TCompanyInfo.java import ... -
Hibernate的复杂用法HibernateCallback
2010-06-13 09:00 1167HibernateTemplate还提供一种更加灵活的方式来操 ... -
hibernate3与spring2零配置
2010-06-11 15:19 1440ssh除了xml配置之外,还可以用标注式配置: (1)sp ... -
hibernate3 annotation 的实例 3 (one to many)
2010-03-24 15:19 2134http://bigcat.easymorse.com/?p= ... -
hibernate annotation spring
2010-03-24 08:35 1124http://2625962-163-com.iteye.co ... -
hibernate3 annotation 的实例 2
2010-03-23 15:51 1840实例二:(主键sequence策 ... -
hibernate3 annotation的实例
2010-03-23 14:55 2027实例一:一个对象的增删改查: import java. ... -
query specified join fetching, but the owner of the fetched association
2010-03-04 09:57 2003错误原因分析: 首先看HQL语句: ... -
illegal attempt to dereference collection
2010-03-04 09:12 3729首先说一句:是版本的问题! 我写的hql为: from D ... -
深化学习hibernate
2010-01-29 14:10 11593.4.5. 查询语言中 ... -
查询hibernate 部分数据
2010-01-29 10:56 1436hibernate查出来人部分数据基本上是数组,有的时候需要对 ... -
解决hibernate中的lazy的问题
2010-01-28 11:38 1441<many-to-one name="TCu ... -
hibernate 批量添加
2009-12-29 13:37 2096public void createRolePermissio ...
相关推荐
Hibernate缓存机制是提高应用程序性能的关键特性,尤其是在频繁与数据库交互的应用中。缓存通过减少对物理数据库的直接访问次数,显著提升了数据读取和写入的速度。这主要是因为从缓存中读取数据比从数据库中获取更...
### 深入理解Hibernate缓存 #### 一、Hibernate缓存概述 Hibernate作为一款流行的Java持久层框架,为开发者提供了高效且灵活的数据访问能力。其中,缓存机制是Hibernate性能优化的重要组成部分之一。理解Hibernate...
### Hibernate的缓存策略 #### 一、缓存的基本概念 缓存技术是现代软件架构设计中的重要组成部分,尤其在数据库交互频繁的应用场景下尤为重要。简单来说,缓存是一种存储技术,位于应用程序与物理数据之间,目的是...
管理Hibernate的缓存缓存 管理Hibernate的缓存缓存
在Java的持久化框架Hibernate中,缓存机制是优化数据库操作性能的重要手段。本文将深入探讨Hibernate的一级缓存、二级缓存以及查询缓存,通过具体的实例来阐述它们的工作原理和使用方法。 首先,我们从一级缓存开始...
【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,从而提高了应用程序的运行速度。缓存中存储的是...
### Hibernate缓存技术研究 #### 一、引言 Hibernate是一种强大的对象-关系映射(Object-Relational Mapping,简称ORM)工具,主要用于Java环境下的应用程序。它能够将应用程序中的对象模型映射到关系型数据库的表...
Hibernate缓存.docHibernate缓存.doc
**Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...
本文将深入探讨Hibernate缓存的原理、类型及其对性能优化的影响。 ### Hibernate缓存原理 Hibernate缓存主要分为一级缓存和二级缓存。一级缓存,也称为会话缓存(Session Cache),是默认启用的,由Hibernate自动...
Hibernate 是一个流行的对象关系映射(ORM)框架,它提供了数据缓存机制以优化数据库访问性能。缓存机制分为一级缓存和二级缓存,两者都有助于减少对物理数据库的直接访问,从而提高应用程序的运行效率。 一级缓存...
3. **实体缓存配置**:接下来,在对应实体的映射文件(如`Customer.hbm.xml`)中,启用二级缓存支持。例如: ```xml ... ``` 这里的`usage`属性可以设置为`read-only`、`nonstrict-read-write`、`read-...
Hibernate缓存机制是提高应用程序性能的关键技术之一,它通过存储数据副本减少对物理数据库的访问。缓存可以分为两层:第一级缓存和第二级缓存。 **第一级缓存**是内置在Session中的,它是不可卸载的,也称为...
这篇博客文章“hibernate缓存ehcache用法”可能详细介绍了如何在Hibernate中配置和使用Ehcache。 首先,我们需要理解什么是缓存。缓存是一种存储技术,用于临时保存经常访问的数据,以减少对主存储器(如数据库)的...
**hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...
Hibernate缓存原理及调优策略 Hibernate缓存原理调优策略
3. 合理设定缓存大小,避免缓存溢出导致系统性能下降。 4. 使用缓存时,应确保有足够的内存资源,防止因缓存过大导致系统内存不足。 总结来说,Hibernate的缓存机制是提升应用性能的重要手段,但正确使用和管理缓存...