`
fantaxy025025
  • 浏览: 1365889 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

session.flash() in Hibernate

阅读更多

Hibernate method flush flush() commit commit() clear clear()

 

Words explaination:

Flush

    To clean, rinse, or empty with a rapid flow of a liquid, especially water

 

1. check the hibernate API

 

Session (Hibernate API Documentation)<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 20 14:19:10 CST 2006 --> <script type="text/javascript"><!-- function windowTitle() { parent.document.title="Session (Hibernate API Documentation)"; } // --></script>

public void flush
() throws HibernateException


Force the Session to flush. Must be called at the end of a unit of work, before commiting the transaction and closing the session (Transaction.commit() calls this method). Flushing is the process of synchronising the underlying persistent store with persistable state held in memory.

 

Throws:
HibernateException

 

    What this method do:Flushing is the process of synchronising the underlying persistent store with persistable state held in memory.

    When to call the method:Must be called at the end of a unit of work, before commiting the transaction and closing the session.

 

2.

http://www.99inf.net/SoftwareDev/Java/53962.htm

 

session save 方法为例来看一个简单、完整的事务流程,如下是代码片段:

…………………………………………………………………………

Session session = sessionFactory .openSession();

Transaction tx = session.beginTransaction();

session.save(customer);// 之前已实例化好了的一个对象

tx.commit();

…………………………………………………………………………

示例很简单,就是向 DB 中插入一条顾客信息,这是一个最简单的 DB 事务。

在这个简单的过程中, Hibernate 为我们做了一些什么事情呢?为了更好的观察,我们将 Hibernate show_sql 属性设置为 true ,然后运行我们的程序,控制台打印出如下信息:

Hibernate: select max(ID) from CUSTOMER

Hibernate: insert into CUSTOMER (NAME, EMAIL, PASSWORD, PHONE, ADDRESS, SEX, IS_MARRIED, description, BIRTHDAY, REGISTERED_TIME, ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

这里也许看不出什么端倪来,现在在 session.save(customer) 后面加一行代码,输出这个 customer OID System.out.println(customer.getId()) ,再次运行程序,控制台输出为:

Hibernate: select max(ID) from CUSTOMER

22

Hibernate: insert into CUSTOMER (NAME, EMAIL, PASSWORD, PHONE, ADDRESS, SEX, IS_MARRIED, description, BIRTHDAY, REGISTERED_TIME, ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

OID insert 语句之前输出,这可以说明两个问题:

1.insert 语句并不是在执行 save 的时候发送给 DB 的;

2.insert 语句是在执行 commit 的时候发送给 DB 的。结合前面我们所说过的:执行 save 的时候, Hibernate 会首先把对象放入缓存,然后计划一条 insert 语句。一个基本的插入流程就出来了:

1.   判断所要保存的实例是否已处于持久化状态,如果不是,则将其置入缓存;

2.   根据所要保存的实例计划一条 insert sql 语句,注意只是计划,并不执行;

3.   事务提交时执行之前所计划的 insert 语句;

后台还打印出了 select max(ID) from CUSTOMER ,这主要是为了给 customer 赋予一个 OID ,因为一般情况下临时对象的 OID NULL

接着我们做两个测试:

1.   tx.commit(); 注释掉,此时控制台没有打印出 insert 语句;

2.   tx.commit() 换成 session.flush ,此时控制太打印出了 insert 语句,但是DB 中并没有添加新的记录;

通过查阅 Hibernate API 可以知道

1. flush 方法的主要作用就是清理缓存,强制数据库与 Hibernate 缓存同步,以保证数据的一致性。

2. 同时其主要动作就是向数据库发送一系列的 sql 语句,并执行这些 sql 语句,但是不会向数据库提交。

commit 方法则会首先调用 flush 方法,然后提交事务。这就是为什么我们仅仅调用 flush 的时候记录并未插入到数据库中的原因,因为只有提交了事务,对数据库所做的更新才会被保存下来。因为 commit 方法隐式的调用了 flush ,所以一般我们都不会显示的调用 flush 方法。

分享到:
评论

相关推荐

    Manning.Spring.in.Action.4th.Edition.2014.11.epub

    11.1.1. Declaring a Hibernate session factory 11.1.2. Building Spring-free Hibernate 11.2. Spring and the Java Persistence API 11.2.1. Configuring an entity manager factory 11.2.2. Writing a JPA-based...

    spring-framework-reference4.1.4

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    spring-framework-reference-4.1.2

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    play框架手册

    Session和Flash作用域 - 42 - 04.模板引擎 - 43 - 模板语法 - 43 - Expressions: ${…} - 44 - Template decorators : #{extends /} and #{doLayout /} - 44 - Tags: #{tagName /} - 45 - Actions: @{…} or @@{…} ...

    carMultimediaSystem-release

    基于QT的车载多媒体系统,这是经过打包之后的,电脑直接下载运行exe就行,不再依赖QT环境

    FlowPortal 以流程驱动的应用(2014扬州CIO沙龙).pdf

    FlowPortal 以流程驱动的应用(2014扬州CIO沙龙).pdf

    路标检测数据集-zip

    数据来源: 将该数据集划分成:训练集701张图和测试集176张图。 按照PaddleDetection的VOC数据格式整理,数据解压后文件组织结构: >>tree ├── annotations │ ├── xxx1.xml │ ├── xxx2.xml │ ├── xxx3.xml │ | ... ├── images │ ├── xxx1.png │ ├── xxx2.png │ ├── xxx3.png │ | ... ├── label_list.txt ├── train.txt └── valid.txt # label_list.txt 是类别名称列表 # train.txt 是训练图像列表

    欧姆龙NJ/NX PLC全ST程序案例解析:锂电新能源行业应用及技术特点

    内容概要:本文详细介绍了欧姆龙NJ/NX PLC在锂电新能源行业的全ST程序案例。首先,文章阐述了锂电新能源行业发展背景下,对数据传输和控制可靠性的高要求。接着,重点分析了欧姆龙NJ/NX PLC的公司级框架及其无加密程序的特点,强调了其灵活、可扩展、稳定可靠的特性。文中提到该PLC系统支持锂电新能源行业FB库文件,能够高效准确地处理和存储数据。此外,文章还探讨了NJ Socket功能作为服务器和客户端的作用,以及它在设备状态机控制、设备PPM控制、运行时间和报警时间监控等方面的具体应用。最后,总结了该PLC系统的技术特点和应用优势,指出其在未来更多领域的潜在应用和发展前景。 适合人群:从事自动化控制、工业互联网、智能制造等相关领域的工程师和技术人员。 使用场景及目标:适用于需要深入了解PLC在锂电新能源行业具体应用场景的专业人士,旨在帮助他们掌握欧姆龙NJ/NX PLC的技术细节和实际操作方法,提升工作效率和质量。 其他说明:本文不仅展示了欧姆龙NJ/NX PLC的强大功能,还提供了丰富的技术细节和实际案例,有助于读者更好地理解和应用相关技术。

    GE Proficy烟草行业解决方案介绍二.pdf

    GE Proficy烟草行业解决方案介绍二.pdf

    基于FPGA的永磁同步伺服电机控制系统设计:矢量控制与硬件电流环实现

    内容概要:本文详细介绍了基于FPGA的永磁同步伺服电机控制系统的实现,涵盖了坐标变换(如Clarke变换)、电流环、速度环、位置环以及SVPWM调制等关键技术。作者通过Verilog代码展示了各个模块的具体实现细节,包括硬件电流环的PI调节器、SVPWM的状态机调制、位置环的正交解码器等。文中特别强调了FPGA相比传统DSP方案在高精度电流环控制方面的优势,如更低的延迟和更高的响应速度。此外,还讨论了一些常见的调试问题及其解决方案,如电机启动时的抖振问题。 适合人群:对嵌入式系统、FPGA开发和电机控制感兴趣的工程师和技术爱好者。 使用场景及目标:适用于需要高性能、低延迟电机控制的应用场景,如工业自动化、机器人等领域。目标是帮助读者理解如何利用FPGA实现高效的伺服电机控制系统。 其他说明:文章不仅提供了理论背景,还给出了具体的Verilog代码实现,便于读者进行实践和调试。

    【Android App开发】高级控件详解:Spinner、ListView、GridView、ViewPager及Fragment的应用与优化

    内容概要:本文档详细介绍了Android高级控件的使用方法及其应用场景。首先讲解了下拉列表Spinner,包括其两种表现形式(下拉列表形式和对话框形式),并介绍了适配器Adapter的基础概念及其三种主要类型:数组适配器ArrayAdapter、简单适配器SimpleAdapter和基本适配器BaseAdapter,重点阐述了它们各自的特点和使用步骤。接着,文档对列表视图ListView进行了深入探讨,涉及分隔线样式、按压背景等属性的设置方式。随后,描述了网格视图GridView,详细解释了其拉伸模式的效果及取值。对于翻页视图ViewPager,不仅介绍了基本概念,还展示了翻页标签栏PagerTabStrip的具体应用,特别是用于创建启动引导页。最后,文档介绍了碎片Fragment的概念,强调了其在大屏设备上的优势,以及与ViewPager结合使用的实战案例——记账本应用。 适合人群:有一定Android开发基础,希望深入了解并掌握高级控件使用的开发者。 使用场景及目标:①掌握下拉列表、列表视图、网格视图、翻页视图等高级控件的实现细节;②理解适配器的作用及其不同类型的使用场景;③学会使用Fragment优化应用界面布局,提高用户体验;④通过具体案例(如记账本),将所学控件应用于实际开发中。 阅读建议:本文档内容详实,涵盖多种高级控件的理论知识与实践技巧。建议读者在学习过程中结合官方文档或相关资料进行对比研究,同时动手实践,以便更好地理解和掌握这些控件的应用。

    【电子设计竞赛】数字频率计设计与制作:频率和周期测量及时间间隔测量功能实现

    内容概要:本文档是2015年全国大学生电子设计竞赛关于数字频率计(F题)的试题说明。竞赛对参赛队伍有严格规定,包括竞赛时间、队伍人数、身份验证等。数字频率计的任务是设计并制作一台闸门时间为1秒的数字频率计。基本要求包括频率和周期测量、时间间隔测量,以及数据刷新时间和显示单位。发挥部分则扩展了频率测量范围、降低了最小有效值电压,并增加了脉冲信号占空比测量功能。评分标准详细列出,涵盖设计报告、基本要求和发挥部分,总分为120分。; 适合人群:参加全国大学生电子设计竞赛的学生团队,特别是选择本科组题目的参赛者。; 使用场景及目标:①帮助参赛学生明确数字频率计的设计与制作要求;②为参赛者提供详细的评分标准,以便他们有针对性地准备竞赛;③确保参赛者了解竞赛规则,避免违规行为。; 其他说明:文档还强调了竞赛纪律,如不得中途更换队员、不得与他人交流等,并明确了提交设计报告、实物及《登记表》的时间和方式。

    教育考试四六级准考证号找回指南:客服推算与自主恢复技巧详解及预防丢失策略

    内容概要:本文系统解析了四六级准考证号的重要性、组成规则以及找回准考证号的方法。首先介绍了准考证号作为唯一身份标识、查分必备信息及补办证明依据的作用,并解析了15位准考证号的具体构成。接着详细阐述了通过官方客服推算准考证号的流程,包括不同客服渠道的选择、联系前的准备工作及特殊案例处理方法。然后提供了四种自主推算准考证号的技巧:考场规律推算法、报名信息回溯法、文档搜索法和代码组合法。此外,提出了预防准考证丢失的三大策略,包括多重备份、智能提醒设置和学校协作机制。最后强调了安全注意事项,针对常见问题进行了权威解答,并给出了紧急情况处理方案。; 适合人群:即将参加或已经参加四六级考试的考生,尤其是那些可能面临准考证号丢失问题的学生。; 使用场景及目标:①帮助考生在成绩公布时快速有效地找回准考证号;②指导考生如何预防准考证号丢失并养成良好的备份习惯;③提高考生对准考证号重要性的认识,避免因准考证号问题影响成绩查询。; 阅读建议:本文内容详实,建议考生仔细阅读并按照文中提供的方法进行实践操作,同时关注官方渠道和服务,确保在需要时能够顺利找回准考证号。

    毕业论文-zero_art_cms_v1.0.1-整站商业源码.zip

    毕业论文-zero_art_cms_v1.0.1-整站商业源码.zip

    毕业论文-深蓝AI智能名片小程序1.7.1-整站商业源码.zip

    毕业论文-深蓝AI智能名片小程序1.7.1-整站商业源码.zip

    交换机实验 - ENSP.doc

    交换机实验 - ENSP.doc

    汽车NVH优化中的电机控制器谐波电流注入技术及其吉利项目应用

    内容概要:本文介绍了电机控制器谐波电流注入技术在汽车NVH(噪声、振动与声振粗糙度)优化中的应用。谐波电流注入技术通过向电机注入特定谐波电流,抵消转矩谐波,使电机运行更加稳定和平滑,从而显著降低汽车运行时的噪声。文中还提供了一个简化的伪代码示例,解释了谐波电流注入的基本原理和技术细节。最后,文章提到该技术已在吉利的一个项目中成功应用,有效提升了车辆的NVH性能,改善了驾乘体验。 适合人群:汽车工程技术人员、NVH研究专家以及对汽车电气系统感兴趣的读者。 使用场景及目标:适用于希望深入了解电机控制器谐波电流注入技术的工作原理及其在汽车NVH优化中的应用的人群。目标是掌握该技术的具体实施方法,并了解其在实际项目中的效果。 其他说明:随着汽车行业对NVH性能的要求日益提高,谐波电流注入技术将在未来更多的汽车项目中得到广泛应用,为用户提供更安静舒适的驾驶环境。

    灭火器识别数据集,识别率99.5%,分别率640x640,127张训练图,支持darknet格式的标注框

    灭火器识别数据集,识别率99.5%,分别率640x640,127张训练图,支持darknet格式的标注框

    spring-cloud-starter-alibaba-nacos-config-2021.1.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    汽车轮胎识别数据集,837张训练图 识别率99.5%,支持yolov7格式的标注

    汽车轮胎识别数据集,837张训练图 识别率99.5%,支持yolov7格式的标注

Global site tag (gtag.js) - Google Analytics