`
caleb_520
  • 浏览: 248134 次
  • 性别: 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+中文文档

    3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他属性 3.8. Hibernate SQL方言 (hibernate.dialect) 3.9. Hibernate日志类别 3.10. JTA TransactionManagers 9.1. 继承映射特性(Features of ...

    hibernate3.2中文文档(chm格式)

    3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他属性 3.8. Hibernate SQL方言 (hibernate.dialect) 3.9. Hibernate日志类别 3.10. JTA TransactionManagers 9.1. 继承映射特性(Features of ...

    Hibernate中文详细学习文档

    11.5. 连接释放模式(Connection Release Modes) 12. 拦截器与事件(Interceptors and events) 12.1. 拦截器(Interceptors) 12.2. 事件系统(Event system) 12.3. Hibernate的声明式安全机制 13. 批量处理(Batch ...

    Hibernate 中文 html 帮助文档

    11.5. 连接释放模式(Connection Release Modes) 12. 拦截器与事件(Interceptors and events) 12.1. 拦截器(Interceptors) 12.2. 事件系统(Event system) 12.3. Hibernate的声明式安全机制 13. 批量处理(Batch ...

    Hibernate实战(第2版 中文高清版)

     10.1.2 Hibernate应用程序中的事务   10.1.3 使用Java Persistence的事务   10.2 控制并发访问   10.2.1 理解数据库级并发   10.2.2 乐观并发控制   10.2.3 获得额外的隔离性保证   10.3 非事务数据...

    Hibernate Annotations 中文文档

    2.4.7. 缓存 2.4.8. 过滤器 2.4.9. 查询 3. 通过XML覆写元数据 3.1. 原则 3.1.1. 全局级别的元数据 3.1.2. 实体级别的元数据 3.1.3. 属性级别的元数据 3.1.4. 关联级别的元数据 4. Hibernate验证器 4.1. ...

    hibernate操作数据库笔记

    //该方法将到classpath下解析hibernate.cfg.xml中的配置,如果不用Hibernate默认的配置文件名和路径,可在该方法中指定Hibernate配置文件的名称和路径 2.用Configuration对象获取SessionFactory和Session对象:...

    HibernateAPI中文版.chm

    3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他属性 3.8. Hibernate SQL方言 (hibernate.dialect) 3.9. Hibernate日志类别 3.10. JTA TransactionManagers 9.1. 继承映射特性(Features of ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     23.2.2 使用手工清理缓存模式下的Session  23.3 小结  23.4 思考题 第24章 Hibernate与Struts框架  24.1 实现业务数据  24.2 实现业务逻辑  24.3 netstore应用的订单业务  24.4 小结 第25章 Hibernate与EJB...

    hibernate annotation 中文文档

    2.4.7. 缓存 2.4.8. 过滤器 2.4.9. 查询 3. 通过XML覆写元数据 3.1. 原则 3.1.1. 全局级别的元数据 3.1.2. 实体级别的元数据 3.1.3. 属性级别的元数据 3.1.4. 关联级别的元数据 4. Hibernate验证器 4.1. 约束 4.1.1....

    ignite-jpa:Spring Boot将Ignite用作Hibernate L2缓存

    ignite-jpa 使用Ignite作为Hibernate L2缓存的Spring Boot您需要创建一个MySQL模式'football'创建餐桌俱乐部创建表club(clubno整数,cname varchar(200),约束pk_club主键(clubno));创建表播放器创建表player...

    Coherence企业级缓存

    Coherence企业级缓存的系列 (一) 特点 (二) QuickStart和编程 (三) 四种缓存类型 (四) 数据管理模式 (五)与Hibernate集成 (六) JMX 管理和监控

    精通hibernate:对象持久化技术孙卫琴第二版part2

    处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他属性 3.8. Hibernate SQL方言 (hibernate.dialect) 3.9. Hibernate日志类别 3.10. JTA TransactionManagers 9.1. 继承映射特性(Features of ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     23.2.2 使用手工清理缓存模式下的Session  23.3 小结  23.4 思考题 第24章 Hibernate与Struts框架  24.1 实现业务数据  24.2 实现业务逻辑  24.3 netstore应用的订单业务  24.4 小结 第25章 Hibernate与EJB...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     23.2.2 使用手工清理缓存模式下的Session  23.3 小结  23.4 思考题 第24章 Hibernate与Struts框架  24.1 实现业务数据  24.2 实现业务逻辑  24.3 netstore应用的订单业务  24.4 小结 第25章 Hibernate与EJB...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     23.2.2 使用手工清理缓存模式下的Session  23.3 小结  23.4 思考题 第24章 Hibernate与Struts框架  24.1 实现业务数据  24.2 实现业务逻辑  24.3 netstore应用的订单业务  24.4 小结 第25章 Hibernate与EJB...

    hibernate 体系结构与配置 参考文档(html)

    二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 3.8.2. ...

    夏昕.深入浅出Hibernate

    从一个基础程序入手,讲述Hibernate的基本语法与配置,慢慢升高到缓存、延迟加载等高级特性。本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate...

Global site tag (gtag.js) - Google Analytics