Hibernate中持久化上下文的flush操作之一COMMIT
2016-06-21 14:34
323 查看
在Hibernate中持久化上下文的flush操作模式中,JPA还支持COMMIT(JPA只支持AUTO和COMMIT两种)。对于COMMIT的flush操作模式,JPA针对HQL查询和native SQL查询有不同的执行:
对于HQL查询,无论是否涉及到了被缓冲的Entity对象,都只会在当前事务提交的时候执行flush操作
对于native SQL查询,如果涉及到了被缓冲的Entity对象,将会执行flush操作
1.HQL查询
txn = entityManager.getTransaction();
txn.begin();
Person person = new Person("John Doe");
entityManager.persist(person);
entityManager.createQuery("select p from Advertisement p")
.setFlushMode( FlushModeType.COMMIT)
.getResultList();
entityManager.createQuery("select p from Person p")
.setFlushMode( FlushModeType.COMMIT)
.getResultList();
//flush executed
txn.commit();
2.native SQL查询
Person person = new Person("John Doe");
entityManager.persist(person);
//flush executed
entityManager.createNativeQuery("select count(*) from Person").setFlushMode( FlushModeType.COMMIT).getSingleResult();
对于HQL查询,无论是否涉及到了被缓冲的Entity对象,都只会在当前事务提交的时候执行flush操作
对于native SQL查询,如果涉及到了被缓冲的Entity对象,将会执行flush操作
1.HQL查询
txn = entityManager.getTransaction();
txn.begin();
Person person = new Person("John Doe");
entityManager.persist(person);
entityManager.createQuery("select p from Advertisement p")
.setFlushMode( FlushModeType.COMMIT)
.getResultList();
entityManager.createQuery("select p from Person p")
.setFlushMode( FlushModeType.COMMIT)
.getResultList();
//flush executed
txn.commit();
2.native SQL查询
Person person = new Person("John Doe");
entityManager.persist(person);
//flush executed
entityManager.createNativeQuery("select count(*) from Person").setFlushMode( FlushModeType.COMMIT).getSingleResult();
相关文章推荐
- C# Entity Framework中的IQueryable和IQueryProvider详解
- 使用Entity Framework(4.3.1版本)遇到的问题整理
- 通过Response.Flush()实现下载失败的解决方法
- Oracle Form中COMMIT的概述及使用技巧
- 高性能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框架中的注解与缓存