hibernate session 之flush 和commit 的区别

  1. flush()方法进行清理缓存的操作,执行一系列的SQL语句,但不会提交事务;commit()方法会先调用flush()方法,然后提交事务. 提交事务意味着对数据库所做的更新会永久保持下来
  2. 所谓清理,是指Hibernate 按照持久化象的状态来同步更新数据库
  3. Flush()后只是将Hibernate缓存中的数据提交到数据库,如果这时数据库处在一个事物当中,则数据库将这些SQL语句缓存起来,当Hibernate进行commit时,会告诉数据库,你可以真正提交了,这时数据才会永久保存下来,也就是被持久化了.
  4. commit针对事物的
  5. flush针对缓存的
  6. 同步到数据库中后只要没有commit还是可以rollback的
时间: 2024-10-01 11:07:07

hibernate session 之flush 和commit 的区别的相关文章

Hibernate session.flush() 使用

session flush在commit之前默认都会执行, 也可以手动执行,他主要做了两件事: 1) 清理缓存. 2) 执行SQL. flush: Session 按照缓存中对象属性变化来同步更新数据库. 默认情况下,Session 会在以下情况下调用 flush: 1. 直接调用 session.flush. 2. 当应用调用Transaction.commit() 时, 会先调用 flush, 然后再向数据路提交. 3. 在做查询时(HQL, Criteria),如果缓存中持久化对象的属性发

hibernate session.save()和session.persist()的区别

save()需要返回一个Serialzable的实现类,因此执行这个方法时会马上插入到数据库 而persist()不会立即插入到数据库. "当我们封装一个长会话流程的时候,persist()方法就显得尤为重要了!" 记录下来,防止自己再一次忘记 hibernate session.save()和session.persist()的区别,码迷,mamicode.com

Hibernate update 和 merge 、saveOrUpdate的区别

this.getSession().update(obj); this.getSession().merge(obj); this.getSession().saveOrUpdate(obj); 1. update 和 merge的区别 首先在执行更新操作的时候,两者都必须要有id update是直接执行update 语句,执行后状态为持久化状态 而merge则不一样: 1. 如果session中有与之对应的对象,也就是主键相同,则会把要保存的obj的值copy给session中的对象,然后up

Hibernate session FlushMode

Hibernate session FlushMode有五种属性: 1.NEVEL:已经废弃了,被MANUAL取代了 2 MANUAL: 如果FlushMode是MANUAL或NEVEL,在操作过程中hibernate会将事务设置为readonly,所以在增加.删除或修改操作过程中会出现如下错误 org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-

SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别

SSH 和 SSM 的定义 本人经历过两种技术架构,分别是常说的 SSH 和 SSM ,SSH 在本科的时候老师就教过.SSM 则是去公司后用的比较多.现在我想将这两大阵营的技术做一下对比.由于本人能力有限,涉及技术较多,我只从具体的应用方面做一些对比. SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,MyBatis 负责持久化层. 共同之处是都使

Hibernate Session & Transaction详解

Hibernate Session & Transaction详解 HIbernate中的Session Session是JAVA应用程序和Hibernate进行交互时使用的主要接口,它也是持久化操作核心API, 注意这里的Session的含义,它与传统意思上web层的HttpSession并没有关系,Hibernate Session之与Hibernate,相当于JDBC Connection相对与JDBC. Session对象是有生命周期的,它以Transaction对象的事务开始和结束边界

Hibernate Session 4种对象状态

站在持久化的角度.Hibernate把对象分为4中状态. 临时状态. 持久化状态.游离状态.删除状态. 1:Save()方法: //这个是验证:1:save方法使临时对象------>变成持久化对象. 2:为对象分配ID. 3:flush缓存时发送insert语句.@org.junit.Test public void testSave(){ News news=new News(); news.setTitle("AA"); news.setAuthor("aa&qu

hibernate session method

import static org.junit.Assert.*; import java.io.FileInputStream; import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate

(21)项目中Hibernate Session的管理方式

1.openSession和getCurrentSession的区别 package com.rk.hibernate.cache; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Test; public class App_SessionInProject { private static Se