2008-03-16
Hibernate数据更新——Session.update/Session.saveOrUpdate
关键字: hibernate update saveorupdate
Hibernate数据更新——Session.update/Session.saveOrUpdate
Session.update执行步骤:
1. 首先根据待更新实体对象的Key,在当前session的内部缓存中进行查找,如果发现,则认为当前实体对象已经处于Persistent状态,返回。从这一点可以看出,对一个Persistent状态的实体对象调用update语句并不会发生任何作用。
2. 初始化实体对象的状态信息(作为之后脏数据检查的依据),并将其纳入内部缓存。注意这里Session.update方法本身并没有发送Update SQL完成数据更新操作,Update SQL将在之后的Session.flush方法中执行(Transaction.commit在真正提交数据库事务之前会调用Session.flush)。
Session.saveOrUpdate执行步骤:
1. 首先在Session内部缓存中进行查找,如果发现则直接返回。
2. 执行实体类对应的Interceptor.isUnsaved方法(如果有的话),判断对象是否为未保存状态。
3. 根据unsaved-value判断对象是否处于未保存状态。
4. 如果对象未保存(Transient状态),则调用save方法保存对象。
5. 如果对象未已保存(Detached状态),则调用update方法将对象与Session重新关联。
可以看到,saveOrUpdate实际上时save和update方法的组合应用。它本身并没有增加新的功能特性。
Session.update执行步骤:
1. 首先根据待更新实体对象的Key,在当前session的内部缓存中进行查找,如果发现,则认为当前实体对象已经处于Persistent状态,返回。从这一点可以看出,对一个Persistent状态的实体对象调用update语句并不会发生任何作用。
2. 初始化实体对象的状态信息(作为之后脏数据检查的依据),并将其纳入内部缓存。注意这里Session.update方法本身并没有发送Update SQL完成数据更新操作,Update SQL将在之后的Session.flush方法中执行(Transaction.commit在真正提交数据库事务之前会调用Session.flush)。
Session.saveOrUpdate执行步骤:
1. 首先在Session内部缓存中进行查找,如果发现则直接返回。
2. 执行实体类对应的Interceptor.isUnsaved方法(如果有的话),判断对象是否为未保存状态。
3. 根据unsaved-value判断对象是否处于未保存状态。
4. 如果对象未保存(Transient状态),则调用save方法保存对象。
5. 如果对象未已保存(Detached状态),则调用update方法将对象与Session重新关联。
可以看到,saveOrUpdate实际上时save和update方法的组合应用。它本身并没有增加新的功能特性。
评论
laitaogood
2008-03-17
能说说在增删改查得时候,改的一般步骤吗?
我一般是先根据KEY来从数据库中查找一个具体的对象,然后再将它的值放在表单里,重新进行修改,选用的是session.saveOrUpdate();但是老是改不了,修改不成功。
后来换了使用session.merge();才能修改成功。
我一般是先根据KEY来从数据库中查找一个具体的对象,然后再将它的值放在表单里,重新进行修改,选用的是session.saveOrUpdate();但是老是改不了,修改不成功。
后来换了使用session.merge();才能修改成功。
发表评论
- 浏览: 6538 次
- 性别:

- 来自: 合肥

- 详细资料
搜索本博客
我的相册
SL372159
共 29 张
共 29 张
最近加入圈子
链接
最新评论
-
JBPM JPA Spring 闹别 ...
JSPM的DB建议另外配置一个库,跟业务系统的库分开 ------------ ...
-- by isky -
JBPM JPA Spring 闹别 ...
JSPM的DB建议另外配置一个库,跟业务系统的库分开。
-- by 差沙 -
JBPM JPA Spring 闹别 ...
我也想知道,这方面的资料倍儿少
-- by rockkratos -
C# Reflection
sdfgsdf ds ddddddddddddddddddddd ...
-- by sonnywanger -
C# Reflection
路过。。。。
-- by wsq777






评论排行榜