`

hibernate中的flush

 
阅读更多

hibernate按照insert,update,----- delete的顺序提交所有登记的操作。

例子:

Cat  cat  =  new  Cat();

cat.setName(“tom”);

s.save(cat);

 

cat.setName(“mary”);

s.update(cat);

 

Cat  littleCat = new  Cat();

littleCat.setName(“tom”);

s.save(littleCat);

 

s.flush();

 

会报主键冲突,

s.save(littleCat);将在

s.update(cat);之前执行,所有的save都将在update之前执行,这就造成了主键冲突的发生

 

解决方法:

 

在s.update(cat); 加入s.flush();

强制session在保存littleCat之前更新name 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    hibernate_flush 深入了解

    Flush是Hibernate将内存中的对象状态同步到数据库的过程。当Session中的对象被修改、新增或删除后,这些变更不会立即写入数据库,而是先保存在Session缓存中。当达到特定条件或手动调用`Session.flush()`时,...

    hibernate的flush机制

    只有当满足特定条件时,Hibernate才会触发Flush操作,将这些缓存中的更改同步到数据库中。 #### 触发Flush的条件 Flush操作通常在以下几种情况下被触发: 1. **显式调用**:开发人员可以直接调用`session.flush()...

    hibernate的session.flush

    `Session.flush()`方法是一个关键的操作,它强制Hibernate将内存中的对象状态同步到数据库,确保数据的一致性。这篇博客深入探讨了`Session.flush()`的工作原理和应用场景。 `Session`在Hibernate中主要有以下职责...

    深入理解Hibernate中的flush机制

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

    hibernate的flush()、refresh()、clear()针对一级缓存的操作的区别.docx

    例如,在上述代码示例中,当第二次调用`setName()`并调用`flush()`后,Hibernate会立即执行两次UPDATE操作,即使事务尚未提交。这在需要立即反映数据变化的场景下很有用,比如在并发环境下确保数据的一致性。 2. `...

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

    在本文中,我们将深入探讨Hibernate的事务处理机制以及`flush`方法的用法,并分析为何在某些场景下会出现特定的异常。 首先,我们需要了解Hibernate中的事务处理。在Java应用中,事务通常与SessionFactory和Session...

    Hibernate中大量数据的更新

    Hibernate 中大量数据的更新 Hibernate 是一个流行的基于 Java 的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在将大量数据插入到数据库时,Hibernate 经常会出现性能和...

    Hibernate官方中文参考手册下载

    在Hibernate中,每个Java类都可以映射为数据库中的一个表,通过注解或者XML文件进行配置。注解如@Entity、@Table、@Id等用于声明实体类和字段的数据库属性。XML文件通常命名为 "*.hbm.xml",包含类到表的映射信息。 ...

    Hibernate的Session_flush与隔离级别代码详解

    Session_flush 是 Hibernate 中的一种机制,用于控制当前 Session 中的对象何时被 flush 到数据库中。flush 操作可以将 Session 中的变化同步到数据库中,从而保持数据的一致性。 隔离级别是数据库事务中的一个概念...

    Hibernate+中文文档

    10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit of work) 11.1.2. 长对话 ...

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

    在每次更新后调用`session.flush()`强制Hibernate执行当前的数据库操作,然后使用`session.evict(entity)`将实体从缓存中移除。这样做可以确保每个更新操作仅执行一次,并且避免了持久化上下文中的内存浪费。 ```...

    Hibernate中的实体状态及转换

    这意味着对象与数据库中的记录建立了绑定,任何对实体对象的修改都会在Session flush时同步到数据库。可以通过Session的`save()`, `saveOrUpdate()`, `merge()`等方法将临时状态的对象转换为持久化状态。 3. **游离...

    Hibernate中文详细学习文档

    10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit of work) 11.1.2. 长对话 ...

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

    10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit of work) 11.1.2. 长对话 ...

    hibernate中文参考文档

    《Hibernate中文参考文档》是Java开发领域中一份重要的学习资源,它详尽地阐述了Hibernate框架的使用方法和核心概念。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java开发者提供了数据持久化的解决...

    Hibernate中对象的三种状态

    在Java的持久化框架Hibernate中,对象的状态管理是其核心特性之一。理解并掌握对象的三种状态对于开发高效、稳定的数据库应用至关重要。本篇将详细阐述Hibernate中的瞬时态、持久态和脱管态,以及它们之间的转换。 ...

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

    在Java开发中,尤其是涉及到大数据量的处理时,人们往往会质疑ORM框架,如Hibernate,是否适合进行批量数据操作。然而,实际上,通过适当的技术手段,我们可以有效地解决Hibernate在批量处理时可能出现的性能问题。...

    Hibernate 中文 html 帮助文档

    10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit of work) 11.1.2. 长对话 11.1.3. ...

    关于flush和evict

    ### 关于flush和evict在Hibernate中的应用 #### 一、引言 在持久层框架Hibernate中,`flush()`和`evict()`方法是开发者在处理数据时经常会遇到的两个重要概念。它们对于理解Hibernate的工作机制及其缓存管理至关...

    Hibernate ORM 5.3.7.Final User Guide

    6. 刷新(Flush):这部分讨论了Hibernate中的刷新机制,即何时以及如何将持久化上下文中的更改提交到数据库。 7. 数据库访问(Database Access):深入探讨Hibernate如何通过抽象层简化数据库访问代码。 8. 事务与...

Global site tag (gtag.js) - Google Analytics