中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Hibernate中DetachedCriteria如何使用

這篇文章將為大家詳細(xì)講解有關(guān)Hibernate中DetachedCriteria如何使用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計(jì),成都網(wǎng)站托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)。

Hibernate DetachedCriteria,這是一個(gè)非常有意義的特性!我們知道,在常規(guī)的Web編程中,有大量的動(dòng)態(tài)條件查詢,即用戶在網(wǎng)頁上面自由選擇某些條件,程序根據(jù)用戶的選擇條件,動(dòng)態(tài)生成SQL語句,進(jìn)行查詢。

針對(duì)這種需求,對(duì)于分層應(yīng)用程序來說,Web層需要傳遞一個(gè)查詢的條件列表給業(yè)務(wù)層對(duì)象,業(yè)務(wù)層對(duì)象獲得這個(gè)條件列表之后,然后依次取出條件,構(gòu)造查詢語句。這里的一個(gè)難點(diǎn)是條件列表用什么來構(gòu)造?傳統(tǒng)上使用Map,但是這種方式缺陷很大,Map可以傳遞的信息非常有限,只能傳遞name和value,無法傳遞究竟要做怎樣的條件運(yùn)算,究竟是大于,小于,like,還是其它的什么,業(yè)務(wù)層對(duì)象必須確切掌握每條entry的隱含條件。因此一旦隱含條件改變,業(yè)務(wù)層對(duì)象的查詢構(gòu)造算法必須相應(yīng)修改,但是這種查詢條件的改變是隱式約定的,而不是程序代碼約束的,因此非常容易出錯(cuò)。

DetachedCriteria可以解決這個(gè)問題,即在web層,程序員使用DetachedCriteria來構(gòu)造查詢條件,然后將這個(gè)DetachedCriteria作為方法調(diào)用參數(shù)傳遞給業(yè)務(wù)層對(duì)象。而業(yè)務(wù)層對(duì)象獲得DetachedCriteria之后,可以在session范圍內(nèi)直接構(gòu)造Criteria,進(jìn)行查詢。就此,查詢語句的構(gòu)造完全被搬離到web層實(shí)現(xiàn),而業(yè)務(wù)層則只負(fù)責(zé)完成持久化和查詢的封裝即可,與查詢條件構(gòu)造完全解耦,非常***!這恐怕也是以前很多企圖在web層代碼中構(gòu)造HQL語句的人想實(shí)現(xiàn)的夢(mèng)想吧!

示例代碼片段如下:

  1. DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);  

  2. detachedCriteria.add(Restrictions.eq("name", "department")).
    createAlias("employees", "e").add(Restrictions.gt(("e.age"), new Integer(20))); 

Department和Employee是一對(duì)多關(guān)聯(lián),查詢條件為:名稱是“department”開發(fā)部門;部門里面的雇員年齡大于20歲;

業(yè)務(wù)層對(duì)象使用該條件執(zhí)行查詢:

detachedCriteria.getExecutableCriteria(session).list();

***的意義在于,業(yè)務(wù)層代碼是固定不變的,所有查詢條件的構(gòu)造都在web層完成,業(yè)務(wù)層只負(fù)責(zé)在session內(nèi)執(zhí)行之。這樣代碼就可放之四海而皆準(zhǔn),都無須修改了。然而Spring和Hibernate DetachedCriteria有不兼容的問題,因此在Spring環(huán)境下面使用Hibernate3需要注意:

Spring的HibernateTemplate提供了Hibernate的***封裝,即通過匿名類實(shí)現(xiàn)回調(diào),來保證Session的自動(dòng)資源管理和事務(wù)的管理。其中核心方法是:

HibernateTemplate.execute(new HibernateCallback() {  public Object doInHibernate(Session session) throws HibernateException {  ....  }  }

回調(diào)方法提供了session作為參數(shù),有了session,就可以自由的使用Hibernate API編程了。使用了spring的之后,代碼修改如下:

  1. DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);  

  2. detachedCriteria.createAlias("employees", "e").
    add(Restrictions.eq("name", "department")).
    add(Restrictions.gt(("e.age"), new Integer(20)));  

  3. departmentManager.findByCriteria(detachedCriteria); 

關(guān)于Hibernate中DetachedCriteria如何使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站欄目:Hibernate中DetachedCriteria如何使用
標(biāo)題URL:http://www.2m8n56k.cn/article20/gpocjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈定制開發(fā)做網(wǎng)站靜態(tài)網(wǎng)站響應(yīng)式網(wǎng)站軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)
主站蜘蛛池模板: 男操女视频 | 国产成人精品日本亚洲语音1 | 成年女人免费观看视频 | 欧美在线视频 一区二区 | aaa毛片免费观看 | 国产三级久久 | 久久久精品2018免费观看 | 中文字幕成人 | 性欧美另类老妇高清 | 另类自拍 | 大桥未久在线精品视频在线 | 日本亚洲国产 | 特级aaa片毛片免费观看 | 欧美成人三级网站在线观看 | 久久久久久免费一区二区三区 | 99在线热视频只有精品免费 | 欧美ppp | 成人亚洲精品一区二区 | 在线观看免费精品国产 | 免费看欧美一级片 | 国内自拍视频在线看免费观看 | 亚洲综合黄色 | 一区毛片 | 色怡红院 | 久久99久久精品国产只有 | 欧美日韩视频在线第一区二区三区 | 免费看成人片 | 性做久久久久久 | 国产日韩久久 | 毛片爽爽爽免费看 | 最刺激黄a大片免费网站 | 国产成人精品曰本亚洲 | 成人在线视频免费看 | 国内精品1区1区3区4区 | 高清不卡一区二区三区 | 久久成人国产精品免费 | 国产va免费精品高清在线观看 | 欧美高清正版在线 | 精品国产精品a | 亚洲成av人片在线观看 | 真人一级毛片全部免 |