`
caleb_520
  • 浏览: 251316 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

hibernate中的缓存模式

阅读更多
下面是总结的Hibernate中的缓存模式

1、FlushMode.NEVER模式
/**
* hibernate中的缓冲模式:FlushMode.NEVER
* 除非程序调用flush方法,否则永不清理缓存,即:不会将数据同步到数据库中
*/
public void flushModeNEVER() {
	Session session = HibernateSessionFactory.getSession();
	session.setFlushMode(FlushMode.NEVER); //设置hibernate中的缓冲模式:FlushMode.NEVER
	Transaction tran = session.beginTransaction();
	Student s = (Student) session.get(Student.class, "s001");
	s.setSage(new Long(33)); //将年龄修改为33
	session.save(s); //将修改过的学生对象保存到数据库中
	tran.commit();
	HibernateSessionFactory.closeSession();
}

上面代码中没有调用session.flush()方法,所以不管怎么使用save()方法都无法将缓存中的数据同步到数据库中

2、FlushMode.COMMIT
/**
* hibernate中的缓存模式:FlushMode.COMMIT
* 在事务结束之前清理session的缓存,其他任何时候都不清理缓存
*/
public void flushModeCOMMIT() {
	Session session = HibernateSessionFactory.getSession();
	session.setFlushMode(FlushMode.COMMIT); //设置hibernate中的缓冲模式:FlushMode.COMMIT
	Transaction tran = session.beginTransaction();
	Student s = (Student) session.get(Student.class, "s001");
	s.setSage(new Long(33)); //将年龄修改为33
	session.save(s); //将修改过的学生对象保存到数据库中
	tran.commit(); //事务提交结束会清理session缓存中的数据,并同步数据库
	HibernateSessionFactory.closeSession();
}

上面代码在事务提交的时候,会将缓存中的数据同步到数据库中

3、FlushMode.AUTO
/**
* hibernate中的缓存模式:FlushMode.AUTO
* 它是Hibernate中的默认的缓存模式。如果一个对象在缓存中被更改了,则在一个查询语句之前Hibernate会将缓存中的数据先同步到数据库,然后才进行数据的查询
*/
public void flushModeAUTO() {
	Session session = HibernateSessionFactory.getSession();
	Transaction tran = session.beginTransaction();
	Student s = (Student) session.get(Student.class, "s001");
	s.setSage(new Long(23)); //将年龄修改为23
	session.save(s);
	s = (Student) session.createQuery("from Student where sno = 's001'").uniqueResult();
	System.out.println("编号为" + s.getSno() + "的学生年龄为:" + s.getSage());
	tran.commit();
	HibernateSessionFactory.closeSession();
}
分享到:
评论
1 楼 spring-china 2011-03-29  
这个是FlushMode,不是CacheMode啊?
CacheMode分为
GET, NORMAL, IGNORE, GET, REFRESH这几种哦...

相关推荐

    HIBERNATE的缓存机制

    Hibernate缓存机制是提高应用程序性能的关键特性,尤其是在频繁与数据库交互的应用中。缓存通过减少对物理数据库的直接访问次数,显著提升了数据读取和写入的速度。这主要是因为从缓存中读取数据比从数据库中获取更...

    深入理解Hibernate缓存

    ### 深入理解Hibernate缓存 #### 一、Hibernate缓存概述 Hibernate作为一款流行的Java持久层框架,为开发者提供了高效且...希望本文能够帮助读者更好地掌握Hibernate缓存的相关知识,以便在实际开发中更加得心应手。

    Hibernate缓存深入详解

    【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,从而提高了应用程序的运行速度。缓存中存储的是...

    Hibernate缓存深入详解 from ITEye

    **Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...

    Hibernate 使用缓存时,数据同步问题

    5. **配置缓存模式**:在创建`SQLQuery`对象时,设置`query.setCacheMode(CacheMode.IGNORE)`,可以防止查询结果与二级缓存交互,直接从数据库中读取最新数据,这对于实时性要求高的场景非常有用。 #### 实例解析 ...

    hibernate的缓存机制和session对象的产生方式案例

    在Java的持久化框架Hibernate中,缓存机制和Session对象的管理是其高效运作的关键要素。本文将深入探讨这两个主题,以帮助开发者更好地理解和利用Hibernate。 首先,让我们聚焦于Hibernate的缓存机制。缓存的存在是...

    Hibernate一级缓存和二级缓存

    描述中提到的链接可能是对Hibernate缓存机制的详细技术博客,但具体内容未给出。因此,我们将基于常规的Hibernate缓存知识进行解释。 **一、Hibernate一级缓存** 一级缓存是每个Hibernate Session内的缓存,它是一...

    Hibernate-二级缓存总结 开发技术 - Java.zip

    文档"Hibernate_二级缓存总结 开发技术 - Java.doc"可能详细阐述了如何配置和使用Hibernate的二级缓存,包括配置文件的设置、缓存提供者的选用、实体和集合的缓存配置,以及实战中的优化技巧。阅读该文档将有助于...

    hibernate查询缓存1

    1. 在Hibernate配置文件中开启查询缓存支持。 2. 在实体类上添加`@Cacheable`注解,表示该类的实例可以被缓存。 3. 在查询语句中使用`setCacheable(true)`来指定该查询应使用查询缓存。 需要注意的是,查询缓存并不...

    Hibernate二级缓存技术

    – 设置Hibernate缓存提供者为EhCache –> <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider <!– 启用查询缓存 –> <property name="hibernate.cache.use_query_cache">true ``` 同时...

    hibernate二级缓存

    通过阅读和运行这个工程,开发者可以更好地理解和掌握Hibernate缓存的实践运用。 总之,理解并有效地使用Hibernate的缓存机制对于提升应用程序性能至关重要。一级缓存和二级缓存相辅相成,前者提供事务级别的高效...

    hibernate缓存.txt

    ### Hibernate缓存机制详解 #### 一、概述 在现代软件开发中,为了提高应用程序的性能,缓存技术被广泛采用。Hibernate作为一种流行的Java持久化框架,提供了丰富的缓存机制来减少对数据库的访问频率,从而提升...

    Hibernate性能优化:一级缓存

    本文将深入探讨Hibernate性能优化中的一个重要概念——一级缓存,并结合给出的压缩包文件“hibernate_cache_level1”,来详细解析一级缓存的工作原理及其优化策略。 一级缓存是Hibernate内置的一种缓存机制,它存在...

    Hibernate OSCache缓存

    对于每个映射到数据库表的实体类,我们需要在对应的 Hibernate 映射文件(`.hbm.xml`)中指定缓存策略。`cache` 元素可以用于定义实体类或集合属性的缓存行为。`usage` 属性是关键,它可以设置为以下几种模式: - `...

    Hibernate中二级缓存ehcache缓存案例

    2. **配置hibernate.cfg.xml**:在Hibernate的配置文件中,开启二级缓存支持并指定使用ehcache。添加以下配置: ```xml <property name="hibernate.cache.use_second_level_cache">true <property name="...

    Hibernate二级缓存攻略

    当通过Hibernate修改了数据库中的对象时,Hibernate会检测到这一变化并从缓存中移除相应的对象,以避免数据不一致。然而,对于复杂的查询,如分页或条件查询,使用二级缓存可能仍然存在1+N问题,因为不同的查询条件...

    Hibernate Session释放模式

    本文将深入探讨Hibernate Session的几种释放模式,以及它们在实际开发中的应用和优缺点。 1. **Transaction边界Session(Transaction Bound Session)** 这是最常见的Session管理方式,通常与Spring的@...

Global site tag (gtag.js) - Google Analytics