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方法的组合应用。它本身并没有增加新的功能特性。
评论
laitaogood 2008-03-17
能说说在增删改查得时候,改的一般步骤吗?
我一般是先根据KEY来从数据库中查找一个具体的对象,然后再将它的值放在表单里,重新进行修改,选用的是session.saveOrUpdate();但是老是改不了,修改不成功。
后来换了使用session.merge();才能修改成功。
发表评论

您还没有登录,请登录后发表评论

isky
搜索本博客
我的相册
B4a53845-f18b-3b2c-8f27-319d394b08e1-thumb
SL372159
共 29 张
存档
最新评论