Hibernateupdate浅谈

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

创新互联公司基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业达州托管服务器报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。

下边是常见的翻译办法:
◆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看是否有该记录,如果有接着到缓存中去找变成持久态的对象

网站名称:Hibernateupdate浅谈
当前网址:http://www.shufengxianlan.com/qtweb/news1/409951.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联