日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Hibernate之Session刷出(flush)

什么是Hibernate Session刷出(flush)?也許大家對(duì)此不夠了解,但相信你看完本文一定有很大的收益。

成都創(chuàng)新互聯(lián)堅(jiān)實(shí)的技術(shù)研發(fā)基礎(chǔ)贏得了行業(yè)內(nèi)的良好口碑,公司成立10余年來(lái),為上千家企業(yè)提供過(guò)網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、搜索引擎優(yōu)化技術(shù)、互聯(lián)網(wǎng)大數(shù)據(jù)整合營(yíng)銷服務(wù),多年的技術(shù)服務(wù)成功經(jīng)驗(yàn)、眾多的客戶使我們能懂得更多,做得更好。"讓您的網(wǎng)站跑起來(lái)"是我們一直追求的目標(biāo)!

每間隔一段時(shí)間,Session會(huì)執(zhí)行一些必需的SQL語(yǔ)句來(lái)把內(nèi)存中的對(duì)象的狀態(tài)同步到JDBC連接中。這個(gè)過(guò)程被稱為Hibernate Session刷出(flush),默認(rèn)會(huì)在下面的時(shí)間點(diǎn)執(zhí)行:

◆在某些查詢執(zhí)行之前

◆在調(diào)用org.hibernate.Transaction.commit()的時(shí)候

◆在調(diào)用Session.flush()的時(shí)候

◆涉及的SQL語(yǔ)句會(huì)按照下面的順序發(fā)出執(zhí)行:

◆所有對(duì)實(shí)體進(jìn)行插入的語(yǔ)句,其順序按照對(duì)象執(zhí)行Session.save()的時(shí)間順序

◆所有對(duì)實(shí)體進(jìn)行更新的語(yǔ)句

◆所有進(jìn)行集合刪除的語(yǔ)句

◆所有對(duì)集合元素進(jìn)行刪除,更新或者插入的語(yǔ)句

◆所有進(jìn)行集合插入的語(yǔ)句

◆所有對(duì)實(shí)體進(jìn)行刪除的語(yǔ)句,其順序按照對(duì)象執(zhí)行Session.delete()的時(shí)間順序

(有一個(gè)例外是,如果對(duì)象使用native方式來(lái)生成ID(持久化標(biāo)識(shí))的話,它們一執(zhí)行save就會(huì)被插入。)

除非你明確地發(fā)出了flush()指令,關(guān)于Session何時(shí)會(huì)執(zhí)行這些JDBC調(diào)用是完全無(wú)法保證的,只能保證它們執(zhí)行的前后順序。 當(dāng)然,Hibernate保證,Query.list(..)絕對(duì)不會(huì)返回已經(jīng)失效的數(shù)據(jù),也不會(huì)返回錯(cuò)誤數(shù)據(jù)。

也可以改變默認(rèn)的設(shè)置,來(lái)讓Hibernate Session刷出(flush)操作發(fā)生的不那么頻繁。 FlushMode類定義了三種不同的方式。 僅在提交時(shí)刷出(僅當(dāng)Hibernate的Transaction API被使用時(shí)有效), 按照剛才說(shuō)的方式刷出, 以及除非明確使用flush()否則從不刷出。 最后一種模式對(duì)于那些需要長(zhǎng)時(shí)間保持Session為打開(kāi)或者斷線狀態(tài)的長(zhǎng)時(shí)間運(yùn)行的工作單元很有用。

 
 
  1. sess = sf.openSession();
  2. Transaction tx = sess.beginTransaction();
  3. sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state
  4. Cat izi = (Cat) sess.load(Cat.class, id);
  5. izi.setName(iznizi);
  6. // might return stale data
  7. sess.find("from Cat as cat left outer join cat.kittens kitten");
  8. // change to izi is not flushed!
  9. ...
  10. tx.commit(); // flush occurs
  11. sess.close();

Hibernate Session刷出(flush)期間,可能會(huì)拋出異常。(例如一個(gè)DML操作違反了約束) 異常處理涉及到對(duì)Hibernate事務(wù)性行為的理解,這里在事務(wù)和并發(fā)中有具體的介紹,這里我們就不加以介紹了。


分享題目:Hibernate之Session刷出(flush)
當(dāng)前網(wǎng)址:http://m.5511xx.com/article/cdohhog.html