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

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

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

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統(tǒng)計

    積分與排名

    friends

    link

    最新評論

    Hibernate 深入研究之 Criteria (轉(zhuǎn))

    ??????

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

    ?????? 如圖 1 。 Hibernate 設計了 CriteriaSpecification 作為 Criteria 的頂級接口,其下面提供了 Criteria DetachedCriteria 。

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

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

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

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

    下面就對 Criterion Projection 進行詳細說明。

    ??????

    1

    ?

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

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

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

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

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

    Example exampleUser =Example.create(u)

    .ignoreCase() // 忽略大小寫

    .enableLike(MatchMode.ANYWHERE);

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


    2

    ??????

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

    ?????? Property 是對某個字段進行查詢條件的設置,如通過

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


    3

    ??????

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

    posted on 2006-07-24 16:23 liaojiyong 閱讀(465) 評論(0)  編輯  收藏 所屬分類: Hibernate

    主站蜘蛛池模板: 18未年禁止免费观看| 免费看又黄又无码的网站| 午夜免费福利影院| 亚洲av无码片区一区二区三区| 最近免费中文字幕大全免费 | 免费国产小视频在线观看| 亚洲1区2区3区精华液| 免费看美女被靠到爽| 亚洲AV色无码乱码在线观看| 韩国免费三片在线视频| 国产亚洲男人的天堂在线观看| 免费A级毛片在线播放不收费| 理论亚洲区美一区二区三区| 亚洲国产电影av在线网址| 久久免费99精品国产自在现线| 亚洲中文字幕不卡无码| 国产成人免费AV在线播放| 久久久久亚洲av无码专区喷水| 国产成人免费在线| 亚洲人成网站色7799| 亚洲国产成人影院播放| 日韩视频免费在线观看| 国产成人精品日本亚洲网址| 国产精品99久久免费| 亚洲免费在线观看| 亚洲视频一区在线| 免费精品一区二区三区在线观看| 免费很黄无遮挡的视频毛片| 亚洲A∨无码一区二区三区| 真人做人试看60分钟免费视频| 亚洲AV日韩AV永久无码色欲| 亚洲乱码国产一区三区| 999国内精品永久免费观看| 狠狠入ady亚洲精品| 亚洲成年人在线观看| 女人被弄到高潮的免费视频| 9久热精品免费观看视频| 亚洲第一香蕉视频| 亚洲国产婷婷香蕉久久久久久| 色欲色香天天天综合网站免费| 亚洲人成网站999久久久综合|