亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2907 | 回復(fù): 0
打印 上一主題 下一主題

load,get;find,iterator;merge,saveOrUpdate,lock的區(qū)別 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-01-19 10:53 |只看該作者 |倒序?yàn)g覽

一、load,get
(1)當(dāng)記錄不存在時(shí)候,get方法返回null,load方法產(chǎn)生異常
(2)load方法可以返回實(shí)體的代理類,get方法則返回真是的實(shí)體類
(3)load方法可以充分利用hibernate的內(nèi)部緩存和二級緩存中的現(xiàn)有數(shù)據(jù),而get方法僅僅在內(nèi)部緩存中進(jìn)行數(shù)據(jù)查找,如果沒有發(fā)現(xiàn)數(shù)據(jù)則將越過二級緩存,直接調(diào)用SQL查詢數(shù)據(jù)庫。
   (4) 也許別人把數(shù)據(jù)庫中的數(shù)據(jù)修改了,load如何在緩存中找到了數(shù)據(jù),則不會(huì)再訪問數(shù)據(jù)庫,而get則會(huì)返回最新數(shù)據(jù)。

二、find,iterator
     (1) iterator首先會(huì)獲取符合條件的記錄的id,再跟據(jù)id在本地緩存中查找數(shù)據(jù),查找不到的再在數(shù)據(jù)庫中查找,結(jié)果再存在緩存中。N+1條SQL。
 (2)find跟據(jù)生成的sql語句,直接訪問數(shù)據(jù)庫,查到的數(shù)據(jù)存在緩存中,一條sql。
三、Hibernate生成的DAO類中函數(shù)功能說明(merge,saveOrUpdate,lock)
/**
      * 將傳入的detached狀態(tài)的對象的屬性復(fù)制到持久化對象中,并返回該持久化對象。
      * 如果該session中沒有關(guān)聯(lián)的持久化對象,加載一個(gè)。
      * 如果傳入對象未保存,保存一個(gè)副本并作為持久對象返回,傳入對象依然保持detached狀態(tài)。
      */

public Sysuser merge(Sysuser detachedInstance) {
      log.debug("merging Sysuser instance");
      try {
       Sysuser result = (Sysuser) getHibernateTemplate().merge(
         detachedInstance);
       log.debug("merge successful");
       return result;
      } catch (RuntimeException re) {
       log.error("merge failed", re);
       throw re;
      }
}
/**
      * 將傳入的對象持久化并保存。 如果對象未保存(Transient狀態(tài)),調(diào)用save方法保存。
      * 如果對象已保存(Detached狀態(tài)),調(diào)用update方法將對象與Session重新關(guān)聯(lián)。
      */
public void attachDirty(Sysuser instance) {
      log.debug("attaching dirty Sysuser instance");
      try {
       getHibernateTemplate().saveOrUpdate(instance);
       log.debug("attach successful");
      } catch (RuntimeException re) {
       log.error("attach failed", re);
       throw re;
      }
}
/**
      * 將傳入的對象狀態(tài)設(shè)置為Transient狀態(tài)
      */

public void attachClean(Sysuser instance) {
      log.debug("attaching clean Sysuser instance");
      try {
       getHibernateTemplate().lock(instance, LockMode.NONE);
       log.debug("attach successful");
      } catch (RuntimeException re) {
       log.error("attach failed", re);
       throw re;
      }
}


本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u1/59737/showart_2152777.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP