持久層框架hibernate遇到的小問(wèn)題

Hibernate未進(jìn)行save操作事務(wù)提交后DB卻更新了,今天工作時(shí),遇到了這個(gè)問(wèn)題,很有意思,但原因很簡(jiǎn)單。

詳細(xì)敘述問(wèn)題

  • 沒(méi)有save操作,事務(wù)提交后,db更新了。

原因

  • 一開(kāi)始我以為是上了更新鎖的原因 ,我便注釋掉了更新鎖。
Criteria criteria = getSession()
                .createCriteria(DemoModel.class)
                .add(Restrictions.eq("xId", xId))
//              .setLockMode(LockMode.UPGRADE_NOWAIT)
                .setMaxResults(1);

運(yùn)行結(jié)果沒(méi)有更新,那是肯定的,因?yàn)椴簧细骆i,即便是save了,也不會(huì)更新。

  • 后來(lái)搜了一下才知道,原來(lái)是hibernate的快照機(jī)制。即一級(jí)緩存會(huì)將數(shù)據(jù)庫(kù)查出的數(shù)據(jù)保存快照,如果事務(wù)提交后,數(shù)據(jù)與快照中的不符合,就會(huì)進(jìn)行更新操作。

總結(jié)

之前我只形而上學(xué)知道持久層框架是有一級(jí)緩存和二級(jí)緩存的,但隨著使用memcache、redis等緩存,就忽略了這些。具體想了解的話,搜索hibernate(或mybatis)一級(jí)緩存、二級(jí)緩存,這里就不詳細(xì)解釋了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 結(jié)果的簡(jiǎn)單,起點(diǎn)的復(fù)雜 在生活工作中,我們常常會(huì)看到一些成功人士在做成一件事時(shí),往往輕而易舉、非常順利。這就是知行...
    無(wú)畏的小強(qiáng)閱讀 350評(píng)論 1 2
  • 紅的,綠的,黃的,紫的,藍(lán)的,黑的與白的 光 里充斥著或弱,或強(qiáng),或尖,或潤(rùn),或引人安靜,或迫人狂躁的 聲 中有可...
    SAIN9閱讀 272評(píng)論 0 1
  • 秋荷一滴露,清夜墜玄天;將來(lái)玉盤上,不定始知圓。而我,竟然發(fā)現(xiàn)了這最美的露珠竟然不在荷葉上。 雨后清晨,漫步山山林...
    藍(lán)田玉兒閱讀 865評(píng)論 0 10
  • 昨夜夢(mèng)到Tom Cruise還有另一位重量級(jí)的好萊塢男演員都愛(ài)上了我。 Tom Cruise好像還和一位來(lái)自Lon...
    唐小山閱讀 234評(píng)論 0 0