Hibernate中持久化上下文的flush操作之一MANUAL
2016-06-21 15:17
260 查看
对于Hibernate中的两种持久化上下文,JPA的EntityManager和Hibernate的Session,两者都提供了flush()方法。任何时候在应用中调用该方法,则触发持久化上下文与数据库的同步。
除此之外,还可以为Hibernate的Session设置flush模式为MANUAL(JPA的EntityManager不支持),即Hibernate的Session只支持手工执行flush操作,示例如下:
Person person = new Person("John Doe");
entityManager.persist(person);
Session session = entityManager.unwrap( Session.class);
session.setFlushMode( FlushMode.MANUAL);
entityManager
.createQuery("select count(id) from Person")
.getSingleResult();
session
.createSQLQuery("select count(*) from Person")
.uniqueResult();
//flush executed
session.flush();
在上述示例中,执行native SQL查询并不能触发Hibernate的Session执行flush操作,只有调用Hibernate的Session的flush()方法时才触发Hibernate的Session执行flush操作。
除此之外,还可以为Hibernate的Session设置flush模式为MANUAL(JPA的EntityManager不支持),即Hibernate的Session只支持手工执行flush操作,示例如下:
Person person = new Person("John Doe");
entityManager.persist(person);
Session session = entityManager.unwrap( Session.class);
session.setFlushMode( FlushMode.MANUAL);
entityManager
.createQuery("select count(id) from Person")
.getSingleResult();
session
.createSQLQuery("select count(*) from Person")
.uniqueResult();
//flush executed
session.flush();
在上述示例中,执行native SQL查询并不能触发Hibernate的Session执行flush操作,只有调用Hibernate的Session的flush()方法时才触发Hibernate的Session执行flush操作。
相关文章推荐
- mysql database manual(mysql数据库手册)
- C# Entity Framework中的IQueryable和IQueryProvider详解
- 使用Entity Framework(4.3.1版本)遇到的问题整理
- 通过Response.Flush()实现下载失败的解决方法
- 高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- Struts2+Hibernate实现数据分页的方法
- Hibernate环境搭建与配置方法(Hello world配置文件版)
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- php ob_flush,flush在ie中缓冲无效的解决方法
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- 详解Java的Hibernate框架中的注解与缓存