关于hibernate的saveOrUpdate方法的一个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于hibernate的saveOrUpdate方法的一个问题相关的知识,希望对你有一定的参考价值。
我在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的事务控制了
关于框架那些事
一、SSM和SSH的区别:
1、ssh(struts,spring,hibernate):SSH通常是struts做前端控制器,spring管理各层的组件,hibernate负责持久化层。
1.1 Struts的原理:
1.2 hibernate的理解:
1.2.1 定义:
1.2.2 hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别:
1.2.3 二级缓存:
2、ssm(springMVC,spring,mybatis):ssm通常是springMVC做前端控制器,spring管理各层组件,mybatis负责持久化层。
2.1 对springMVC的理解:
2.2 对spring的理解:
2.2.1 定义:
2.2.2 依赖注入:
2.3 mybatis和hibernate的区别:
二、面向切面AOP
三、控制反转IOC()
以上是关于关于hibernate的saveOrUpdate方法的一个问题的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate中saveOrUpdate()和merge()的区别
Hibernate中saveOrUpdate()和merge()的区别
jooq中hibernate的saveOrUpdate方法的等价物是啥?
hibernate save,update,saveorupdate方法有什么区别