今天爱分享给大家带来Hibernate 的 session.save()与 session.saveOrUpdate()的区别?【面试题详解】,希望能够帮助到大家。
1.save()方法,调用 save 方法时,首先会在 session 缓存中查找保存对象如果实体
对象已经处于 Persient 状态,直接返回;否则并将保存至数据库,对象变为持久状态。
2.saveOrUpdate()方法:和 save 方法一样首先在 session 缓存中查找,判断对象是
否为为保存状态,如果对象处于 Persient,不执行操作,处于 Transient 执行 save 操作,
处于 Detached 调用 saveOrUpdate 将对象与 session 重新关联(简单的说就是该方法会先看
该对象是否已经存在,如果已经存在就更新,否则新增保存),如果此时 saveOrUpdate 的对
象与另一个与 Session 关联的对象持有相同的持久化标识则抛出相同的标识符异常。