关于hibernate的saveorupdate方法的一个问题

author author     2023-05-13     677

关键词:

我在dao的实现层调用了session的saveOrUpdate方法来进行保存或者更新数据,在业务层通过HQL语句查询到一条记录啊,重新set了它的一个属性,然后执行dao层的saveOrUpdate,但是不进行更新,但是加了seesion.flush()之后就更新了。在业务层我增加了事务的控制,但是在事务提交前不是默认执行力flush方法吗?为什么需要显示调用才起作用呢?

hibernate的一级缓存中,flush是清除缓存,将hibernate快照当中的数据一次性的提交的,hibernate在查询数据的时候,他只会从数据查询一次,然后将数据放到内存当中,当你在set属性时,hibernate会和内存中的做对比,如果只不一样的话,就修改其值, ession.flush清除缓存,清除缓存时就会提交事务~ 参考技术A hibernate.transaction.flush_before_completion 如果开启, session在事务完成后将被自动清洗(flush)。
hibernate.transaction.auto_close_session 如果开启, session在事务完成后将被自动关闭。
参考技术B 再加一个spring就方便多了追问

加了spring的事务控制了

追答

那就在Dao写save方法可以了

参考技术C 事务?你加入的是spring做的方法切面事务吗?追问

加了spring的事务控制了

jooq中hibernate的saveOrUpdate方法的等价物是啥?

】jooq中hibernate的saveOrUpdate方法的等价物是啥?【英文标题】:Whatistheequivalentofhibernate\'ssaveOrUpdatemethodinjooq?jooq中hibernate的saveOrUpdate方法的等价物是什么?【发布时间】:2019-08-2313:08:12【问题描述】:如果存在,我想更新行,否则... 查看详情

hibernate中saveorupdate()和merge()的区别

this.getSession().merge(obj);this.getSession().saveOrUpdate(obj);saveOrUpdate():saveOrUpdate()基本上就是合成了save()和update()1.如果该po对象已经在本session中持久化了,在本session中执行saveOrUpdate不做任何事 2.如果savaOrUpdate(新po)与 查看详情

hibernate中saveorupdate()和merge()的区别

this.getSession().merge(obj);this.getSession().saveOrUpdate(obj);saveOrUpdate():saveOrUpdate()基本上就是合成了save()和update()1.如果该po对象已经在本session中持久化了,在本session中执行saveOrUpdate不做任何事 2.如果savaOrUpdate(新po)与 查看详情

关于hibernate级联更新插入信息时提示主键不为空的问题“org.hibernate.stalestateexception:batchupdatereturnedunexpectedr

org.hibernate.StaleStateException:Batchupdatereturnedunexpectedrowcountfromupdate:0actualrowcount:0expected:1 出现这一错误的主要原因有两个    使用的是hibernate的saveOrUpdate方法保存实例。saveOrUpdate方法 查看详情

关于框架那些事

...    1.2.1定义:    1.2.2 hibernate中的update()和saveOrUpdate()的区别,session的l 查看详情

memge和saveorupdate的区别

今天做hibernate开发的时候遇到这样一个错误:  adifferentobjectwiththesameidentifiervaluewasalreadyassociatedwiththesession  (不同对象具有相同的标识符值已经与会话关联起来)牵涉出了Hibernate中几个易混淆方法的区别:首先要介绍下Hiber... 查看详情

hibernate三种状态的区分,以及save,update,saveorupdate,merge等的使用----转----

Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用Hibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(PersistenceObject),瞬时对象和脱管对象也称为VO(ValueO... 查看详情

hibernate中session的save()update()merge()lock()saveorupdate()和persist()方法的区别

...ched)  1.瞬时态的实例可以通过调用save()、persist()或者saveOrUpdate()方法变成持久态  2.游离态的实例可以通过调用update()、saveOrUpdate()、lock()或者replicate()方法变成持久态  3.save()和up 查看详情

save()saveorupdate()hibernate的merge()方法

Save  save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思。我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原因。假如两个实体之间有关系(例如employee表和address表有一... 查看详情

在休眠 saveOrUpdate() 期间获取 org.hibernate.StaleStateException

】在休眠saveOrUpdate()期间获取org.hibernate.StaleStateException【英文标题】:Gettingaorg.hibernate.StaleStateExceptionduringhibernatesaveOrUpdate()【发布时间】:2016-02-2516:24:28【问题描述】:我的PostgreSQL数据库中有以下数据库表:CREATETABLEsl_office_templ... 查看详情

hibernate三种状态的区分,以及save,update,saveorupdate,merge等的使用

Hibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(PersistenceObject),瞬时对象和脱管对象也称为VO(ValueObject)。 瞬时态        由new... 查看详情

关于框架那些事

...    1.2.1定义:    1.2.2 hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别:    1.2.3二级缓存:2、ssm(springMVC,spring,mybatis):ssm通常是springMVC做前端控制器,spring管理各层组件,mybatis负责持久化层... 查看详情

Hibernate saveOrUpdate() 更新时创建新条目

】HibernatesaveOrUpdate()更新时创建新条目【英文标题】:HibernatesaveOrUpdate()createsnewentrywhenupdating【发布时间】:2017-11-2900:17:23【问题描述】:我创建了一个名为“gauge_category”的表,它只有一个字段“gauge_category_id”作为主键,数据... 查看详情

在hibernate中,为什么saveorupdate在数据库中已存在对象时给出异常(代码片段)

...我忘记了这个检查,只是尝试添加而不检查,因为我使用saveOrUpdate()我的理解,如果Hibernate发现它已经添加它只会更新和我的保存所做的更改。但相反,它失败了18/08/201821.58.34:BST:Errors:addError:SEVERE:AddingError:Database 查看详情

hibernate的merge和saveorupdate方法有啥区别

在网上看到的解释,组织的语言比我自己组织的较好理解,我就抄下来了:当我们使用update的时候,执行完成后,我们提供的对象a的状态变成持久化状态。但当我们使用merge的时候,执行完成,我们提供的对象a还是脱管状态,hibe... 查看详情

使用 Hibernate 批量插入或更新?

...20K条记录。使用休眠时,这会减慢速度。基本上,当使用saveOrUpdate();时,似乎hibernate在每次插入(或更新)之前都在执行SELECT;对于使用saveOrUpdate()持久化的每个 查看详情

hibernate中java对象的三种状态

...都是通过session来调用,瞬态到持久态的方法有save()、saveOrUpdate()、get()、load();持久态到瞬态的方法有delete();游离态到持久态的方法有update()、saveOrUpdate()、lock();持久态到游离态的方法有:session.close(... 查看详情

tomcat 7.0.42 pooling, hibernate 4.2, mysql 坚如磐石的自动重新连接解决方​​案

...时间】:2013-08-0709:02:51【问题描述】:我已经阅读了很多关于从休眠会话自动重新连接到mysql的问题的帖子。其他人提到增加mysqlwait_timeou 查看详情