`

Hibernate commit() 和flush() 的区别

阅读更多

Hibernate commit() 和flush() 的区别
孙卫琴<<精通Hibernate java对象持久化技术详解>>p177 说,flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;commit()方法会先调用flush()方法,然后提交事务. 提交事务意味着对数据库所做的更新会永久保持下来
p148 所谓清理,是指Hibernate 按照持久化象的状态来同步更新数据库

Flush()后只是将Hibernate缓存中的数据提交到数据库,如果这时数据库处在一个事物当中,则数据库将这些SQL语句缓存起来,当Hibernate进行commit时,会告诉数据库,你可以真正提交了,这时数据才会永久保存下来,也就是被持久化了.

 

 

 

commit针对事物的
flush针对缓存的
同步到数据库中后只要没有commit还是可以rollback的。

分享到:
评论

相关推荐

    hibernate的flush机制

    然而,对于Hibernate的一些高级特性,如Flush机制,深入理解其工作原理对于避免潜在的陷阱和提高应用程序性能至关重要。 #### Flush机制概览 在Hibernate中,Flush机制是用于同步Session缓存与数据库之间变化的...

    Hibernate的事务处理机制和flush方法的用法.docx

    在使用Hibernate进行数据库操作时,事务管理和`flush`方法的正确使用至关重要,因为它们直接影响到数据的一致性和安全性。在本文中,我们将深入探讨Hibernate的事务处理机制以及`flush`方法的用法,并分析为何在某些...

    深入理解Hibernate中的flush机制

    在深入理解Hibernate中的flush机制时,我们首先要明白的是,Hibernate是一个ORM(对象关系映射)框架,它在Java应用程序和数据库之间提供了一种抽象层。flush机制是Hibernate中非常重要的一部分,它涉及到对象的状态...

    关于hibernate的批处理

    3. **Flush模式**: Hibernate有四种Flush模式:AUTO、COMMIT、MANUAL和NEVER。在大数据批处理中,一般使用MANUAL或COMMIT模式,以控制何时将脏数据刷新到数据库,避免频繁的自动刷新影响性能。 4. **Query....

    Hibernate中大量数据的更新

    然而,在将大量数据插入到数据库时,Hibernate 经常会出现性能和内存溢出问题。本文将讨论使用 Hibernate 批量更新大量数据的方法和技巧。 批量更新的必要性 在实际应用中,我们经常需要将大量数据插入到数据库中...

    Hibernate下数据批量处理解决方案

    在代码中,我们需要在适当的时候调用`flush()`和`clear()`方法,强制将缓存中的对象写入数据库并清空缓存,从而释放内存。例如: ```java Session session = sessionFactory.openSession(); Transaction tx = ...

    hibernate-5.2.15. 最新jar包

    在业务逻辑处理中,通常使用Session的beginTransaction、save/merge、flush和commit等方法来完成数据库操作。 3. **Query和Criteria API**:提供两种方式执行查询,一是HQL(Hibernate Query Language),类似于SQL...

    jdbc_Hibernate总结

    `flush()`、`clear()`和`close()`方法分别用于清理缓存并执行SQL(但不提交)、清空缓存和回滚事务,以及清空缓存并提交事务。值得注意的是,`Session`中的缓存会存储所有被操作的对象,如`save`、`update`、`get`和...

    在Hibernate中处理批量更新和批量删除

    本文将深入探讨在Hibernate中处理批量更新和批量删除的策略,以及如何优化这些操作,以提高数据库操作的效率。 ### 批量更新的常规方法 在Hibernate中,最直观的批量更新方式是通过循环遍历查询结果集,并对每个...

    hibernate的查询方式介绍和hibernate的批处理和连接池配置hibernate

    通过以上介绍,我们可以看到 Hibernate 提供了多种查询方式以及批处理和连接池的配置选项,这些功能可以帮助开发者更高效地管理和操作数据库。在实际应用中,开发者可以根据具体的需求选择合适的查询方式,并合理...

    hibernate3.6.jar

    通过`openSession()`方法创建Session实例,`save()`, `update()`, `delete()`等方法用于持久化操作,`flush()`和`clear()`方法则用来管理缓存和事务。 3. **Criteria 查询**:除了传统的HQL(Hibernate Query ...

    详解Hibernate事务处理机制

    本文将深入探讨Hibernate中的事务处理机制,并通过具体示例帮助读者更好地理解和运用。 #### 二、Hibernate事务处理基础 ##### 2.1 事务概念 在数据库操作中,事务是指一系列操作作为一个完整的单元来执行。这些...

    Hibernate框架

    同时,合理设置缓存策略和使用批处理操作(如`Session.flush()`和`Session.clear()`)也能显著提高应用性能。 此外,`SessionFactory`是Hibernate的重要组件,它负责创建和管理`Session`对象。一个应用程序通常只...

    hibernate 4.1.4

    在Hibernate中,我们可以使用Transaction接口来管理事务,通过`begin()`开启事务,`commit()`提交事务,`rollback()`回滚事务,确保数据的一致性。同时,Hibernate也支持Spring等框架的事务管理方式,提供更高级别的...

    Hibernate语句

    Hibernate的核心配置文件是`hibernate.cfg.xml`,它包含了数据库连接信息、实体类映射和SessionFactory的创建设置。配置文件中的关键元素有: 1. `session-factory`: 定义SessionFactory的属性,如数据库URL、...

    在Hibernate应用中处理批量更新和批量删除

    1. **使用`flush()`和`evict()`方法**:在修改实体后,主动调用`session.flush()`方法,使Hibernate将缓存中的变更同步到数据库,然后调用`session.evict(entity)`方法,从缓存中移除实体,这样下一次操作不会受到...

    Hibernate 3.6 Final Source Code

    1. SessionImpl:Session的实现类,包含打开、关闭、flush和commit等关键方法。 2. Criteria API:源码中可以看到CriteriaBuilder和CriteriaQuery的实现,用于构建动态查询。 3. QueryTranslator:翻译HQL语句到SQL...

    hibernate连接数据[Mysql]的代码实例

    - 首先,你需要在项目中添加Hibernate和MySQL的JDBC驱动依赖。这通常通过Maven或Gradle的pom.xml或build.gradle文件完成。 - 添加Hibernate核心库: ```xml &lt;groupId&gt;org.hibernate &lt;artifactId&gt;hibernate-...

    hibernate一级缓存

    而在事务提交(`Transaction.commit()`)时,Hibernate会自动执行flush操作。 3. **缓存查询**:当从数据库中查询数据时,Hibernate首先会在一级缓存中查找,如果找到则直接返回,无需再次访问数据库,这大大提升了...

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

    通过begin()开启事务,Hibernate会自动创建Session,然后在commit()或rollback()时关闭Session。这种方法简化了代码,但可能导致Session生命周期过长,增加内存压力。 总的来说,理解和熟练运用Hibernate的缓存机制...

Global site tag (gtag.js) - Google Analytics