<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    顏超敏的電子商務(wù)博客
    電子商務(wù)軟件研發(fā)、Java開源技術(shù)和軟件分析、設(shè)計(jì)經(jīng)驗(yàn)分享
    posts - 18,  comments - 36,  trackbacks - 0

    Hibernate 深入研究之 Criteria

    ? By: ?Faith.Yan

    2006-07-22
    MSN: Yanchaomin@hotmail.com
    ??????

    最近在項(xiàng)目中使用 Spring Hibernate 進(jìn)行開發(fā),有感于 Criteria 比較好用,在查詢方法設(shè)計(jì)上可以靈活的根據(jù) Criteria 的特點(diǎn)來方便地進(jìn)行查詢條件的組裝。所以現(xiàn)在對 Hibernate Criteria 深入研究一下。《 Hibernate Reference 》及網(wǎng)上其它一些資料對 Criteria 已經(jīng)做了很多介紹。本文主要是從 Criteria 的結(jié)構(gòu)入手來進(jìn)行分析。

    ?????? 如圖 1 Hibernate 設(shè)計(jì)了 CriteriaSpecification 作為 Criteria 的頂級接口,其下面提供了 Criteria DetachedCriteria

    Criteria DetachedCriteria 的主要區(qū)別在于創(chuàng)建的形式不一樣, Criteria 是在線的,所以它是由 Hibernate Session 進(jìn)行創(chuàng)建的;而 DetachedCriteria 是離線的,創(chuàng)建時無需 Session DetachedCriteria 提供了 4 個靜態(tài)方法 forClass(Class) forEntityName(Name) 進(jìn)行 DetachedCriteria 實(shí)例的創(chuàng)建。 Spring 的框架提供了

    getHibernateTemplate().findByCriteria(detachedCriteria) 方法可以很方便地根據(jù)

    DetachedCriteria 來返回查詢結(jié)果。

    如圖 1 Criteria DetachedCriteria 均可使用 Criterion Projection 設(shè)置查詢條件。可以設(shè)置 FetchMode( 聯(lián)合查詢抓取的模式 ) ,設(shè)置排序方式。對于 Criteria 還可以設(shè)置 FlushModel (沖刷 Session 的方式)和 LockMode (數(shù)據(jù)庫鎖模式)。

    下面就對 Criterion Projection 進(jìn)行詳細(xì)說明。

    ??????

    1

    ?

    ?????? Criterion Criteria 的查詢條件。

    Criteria 提供了 add(Criterion criterion) 方法來添加查詢條件。圖 2 Criterion 的結(jié)構(gòu)圖。 Criterion 接口的主要實(shí)現(xiàn)包括: Example Junction SimpleExpression 。而 Junction 的實(shí)際使用是它的兩個子類 conjunction disjunction ,分別是使用 AND OR 操作符進(jìn)行來聯(lián)結(jié)查詢條件集合。

    Criterion 的實(shí)例可以通過 Restrictions 工具類來創(chuàng)建, Restrictions 提供了大量的靜態(tài)方法,如 eq (等于)、 ge (大于等于)、 between 等來方法的創(chuàng)建 Criterion 查詢條件

    SimpleExpression 實(shí)例)。除此之外, Restrictions 還提供了方法來創(chuàng)建 conjunction disjunction 實(shí)例,通過往該實(shí)例的 add(Criteria) 方法來增加查詢條件形成一個查詢條件集合。

    至于 Example 的創(chuàng)建有所不同, Example 本身提供了一個靜態(tài)方法 create(Object entity) ,即根據(jù)一個對象(實(shí)際使用中一般是映射到數(shù)據(jù)庫的對象)來創(chuàng)建。然后可以設(shè)置一些過濾條件:

    Example exampleUser =Example.create(u)

    .ignoreCase() // 忽略大小寫

    .enableLike(MatchMode.ANYWHERE);

    // String 類型的屬性,無論在那里值在那里都匹配。相當(dāng)于 %value%


    2

    ??????

    Project 主要是讓 Criteria 能夠進(jìn)行報(bào)表查詢,并可以實(shí)現(xiàn)分組。 Project 主要有 SimpleProjection ProjectionList Property 三個實(shí)現(xiàn)。其中 SimpleProjection ProjectionList 的實(shí)例化是由內(nèi)建的 Projections 來完成,如提供的 avg count max min sum 可以讓開發(fā)者很容易對某個字段進(jìn)行統(tǒng)計(jì)查詢。

    ?????? Property 是對某個字段進(jìn)行查詢條件的設(shè)置,如通過

    ????? Porperty.forName(“color”).in(new String[]{“black”,”red”,”write”}); 則可以創(chuàng)建一個 Project 實(shí)例。通過 criteria add(Project) 方法加入到查詢條件中去。


    3

    ??????

    ?????? 使用 Criteria 進(jìn)行查詢,主要要清晰的是 Hibernate 提供了那些類和方法來滿足開發(fā)中查詢條件的創(chuàng)建和組裝,其結(jié)構(gòu)層次如何。這樣使用起來便可得心應(yīng)手。



    =================================
    顏超敏
    專注電子商務(wù)、工作流企業(yè)級Java軟件系統(tǒng)研發(fā);
    個人博客:Craft6.cn 唯心六藝
    =================================
    posted on 2006-07-22 16:47 顏超敏 閱讀(2015) 評論(3)  編輯  收藏 所屬分類: Java開源技術(shù)

    FeedBack:
    # re: Hibernate 深入研究之Criteria
    2006-07-23 12:00 | 胡子魚
    寫得很好,要是再加點(diǎn)代碼實(shí)例就更棒了!  回復(fù)  更多評論
      
    # re: Hibernate 深入研究之Criteria
    2006-07-23 15:47 | sqhe
    請問 這些UML圖是使用什么軟件畫的?  回復(fù)  更多評論
      
    # re: Hibernate 深入研究之Criteria
    2006-07-23 18:06 | Faith.Yan
    網(wǎng)上或者是參考書籍的Criteria的實(shí)例比較多,我寫本文是想從一個新的角度來寫,不想重復(fù)。

    這些UML圖使用IBM的RSA來畫的。  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    <2006年7月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    留言簿(3)

    隨筆分類(20)

    隨筆檔案(17)

    相冊

    友情鏈接

    最新隨筆

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产一级片免费看| 亚洲美免无码中文字幕在线| 国产一级淫片视频免费看| 国产精品成人四虎免费视频| 四虎永久在线精品免费观看地址| 亚洲成人国产精品| 中文字幕亚洲综合久久男男| 亚洲精品色午夜无码专区日韩| 久久精品国产亚洲网站| 亚洲色图黄色小说| 亚洲AV无码一区二区一二区 | 亚洲欧洲国产成人精品| 亚洲一级高清在线中文字幕| 亚洲av无码专区在线观看亚| 国产日韩精品无码区免费专区国产 | 精品国产亚洲AV麻豆| 国产亚洲中文日本不卡二区| 一级毛片在线免费播放| 亚洲成年人免费网站| 国产91久久久久久久免费| 久久精品国产99精品国产亚洲性色| 亚洲伊人久久大香线蕉啊| 国产亚洲综合视频| a拍拍男女免费看全片| 亚洲一级片免费看| 亚洲一日韩欧美中文字幕在线| 国产精品永久免费视频| 国产免费看JIZZ视频| 亚洲中久无码永久在线观看同| 日韩亚洲不卡在线视频中文字幕在线观看| 深夜a级毛片免费无码| 亚洲精品视频在线观看免费| 亚洲综合色区在线观看| 亚洲日韩精品无码专区| 1000部啪啪未满十八勿入免费| 国产aⅴ无码专区亚洲av麻豆| 国产亚洲精品VA片在线播放| 午夜免费福利片观看| 国产日韩亚洲大尺度高清| 看一级毛片免费观看视频| 在线免费观看视频你懂的|