温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hibernate update操作的示例分析

发布时间:2021-12-06 09:21:41 来源:亿速云 阅读:157 作者:小新 栏目:编程语言

这篇文章主要介绍Hibernate update操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

在所有之前,说明一下,对于Hibernate,它的对象有三种状态,transient、persistent、detached

下边是常见的翻译办法:
◆transient:瞬态或者自由态(new DeptPo(1,”行政部”,20,”行政相关”),该po的实例和session没有关联,该po的实例处于transient)
◆persistent:持久化状态(和数据库中记录想影射的Po实例,它的状态是persistent, 通过get和load等得到的对象都是persistent)
◆detached:脱管状态或者游离态
(1)当通过get或load方法得到的po对象它们都处于persistent,但如果执行delete(po)时(但不能执行事务),该 po状态就处于detached, (表示和session脱离关联),因delete而变成游离态可以通过save或saveOrUpdate()变成持久态
(2)当把session关闭时,session缓存中的persistent的po对象也变成detached

Hibernate update和flush区别

Hibernate update操作的是在自由态或脱管状态(因session的关闭而处于脱管状态)的对象//updateSQL,而flush是操作的在持久状态的对象。

默认情况下,一个持久状态的对象的改动(包含set容器)是不需要update的,只要你更改了对象的值,等待Hibernate flush就自动更新或保存到数据库了。Hibernate flush发生在以下几种情况中:
1, 调用某些查询的和手动flush(),session的关闭、SessionFactory关闭结合。get()一个对象,把对象的属性进行改变,把资源关闭。
2,transaction commit的时候(包含了flush)

Hibernate update和lock区别

Hibernate update是把一个已经更改过的脱管状态的对象变成持久状态

lock是把一个没有更改过的脱管状态的对象变成持久状态(针对的是因Session的关闭而处于脱管状态的po对象(2),不能针对因delete而处于脱管状态的po对象)

对应更改一个记录的内容,两个的操作不同:
◆update的操作步骤是:属性改动后的脱管的对象的修改->调用update
◆lock的操作步骤是:调用lock把未修改的对象从脱管状态变成持久状态-->更改持久状态的对象的内容-->等待flush或者手动flush

clear和evcit的区别

clear完整的清除session缓存。evcit(obj)把某个持久化对象从session的缓存中清空。
session.lock(xtyhb,LockMode.NONE);
//表示直接到缓存中去找变成持久态的对象
session.lock(xtyhb,LockMode.READ);
//先通过ID读数据库该记录的ID看是否有该记录,如果有接着到缓存中去找变成持久态的对象

以上是“Hibernate update操作的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI