浅谈hibernate save和saveOrUpdate区别
来源:互联网 发布:dijkstra算法 堆优化 编辑:程序博客网 时间:2024/06/05 01:06
hibernate的对象有3种状态,分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。
处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。
save和saveOrUpdate的区别,估计大家都比较了解
- save是保存要持久化的数据,会走insert语句
- saveOrUpdate是根据unsave-value的设定,判定是要save还是update操作
今天,做项目碰到一个问题,我在service层中的一个函数中对一个实体batch(批次)进行一次save然后进行数据处理,最后又调用了一次update方法用于更新batch的状态,即添加时状态为“0”,数据处理后更新状态为“1”,此时出现
a different object with the same identifier value was already associated with the session
异常,它的意思是在一个操作里有了两个同样的标示符,分析后认为update时数据需为po,但save后batch变为了vo状态,此时update时导致此异常,后来在update前先get一下batch然后update是没问题的,但是这样有导致多走了一次select语句,因为batch与数据库是一直的(因为刚刚save),所以就想如何让其insert后仍然处于po状态,后来看到资料使用了saveOrUpdate方法,测试后发现,没有问题,不再出异常.
所以认为save和 saveOrUpdate除了在运行机制上有区别以外,在insert以后,save后的实体处于vo状态,而通过saveOrUpdate后的实体
处于po状态,可以修改实体后直接调用update方法,执行更新操作
- 浅谈hibernate save和saveOrUpdate区别
- 浅谈hibernate save和saveOrUpdate区别
- 浅谈hibernate save和saveOrUpdate区别
- 浅谈hibernate save和saveOrUpdate区别
- 浅谈hibernate save ,update 和 saveOrUpdate的区别
- hibernate save和update以及saveOrUpdate区别
- hibernate save和update以及saveOrUpdate区别
- hibernate save和update以及saveOrUpdate区别
- hibernate save和update以及saveOrUpdate区别
- hibernate save和update以及saveOrUpdate区别
- Hibernate中的save()和saveOrUpdate()的区别
- hibernate中save,update,saveOrUpdate的用法和区别
- Hibernate save, saveOrUpdate, persist, merge, update 区别
- Hibernate 中save()和saveorupdate()的用法
- hibernate的save和saveOrUpdate方法
- hibernate save,saveOrUpdate ,persist
- hibernate框架中session的save() 和 update() 方法的区别 saveOrUpdate()方法
- 【Hibernate】Hibernate中save、persist和saveOrUpdate有何不同?
- php5.5+apache(X64)环境快速搭建
- Java I/O学习(附实例和详解)
- 设计模式--UML类图关系
- Leetcode——463. Island Perimeter
- 文章标题 诡异的楼梯
- 浅谈hibernate save和saveOrUpdate区别
- 【Java】Java中对象的深复制(深克隆)和浅复制(浅克隆)
- java 如何在pdf中生成表格
- 【mysql】一个因为断电导致无法启动mysql
- Mybatis+Oracle实现按条件分页查询
- maven(一)安装配置
- [sqli-labs]下载与部署
- Winform自动升级系统的设计与实现(源码)
- Flume学习笔记 --- Flume内置source,channel, sink介绍