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

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

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

    顏超敏的電子商務博客
    電子商務軟件研發、Java開源技術和軟件分析、設計經驗分享
    posts - 18,  comments - 36,  trackbacks - 0

    Hibernate 深入研究之 Criteria

    ? By: ?Faith.Yan

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

    最近在項目中使用 Spring Hibernate 進行開發,有感于 Criteria 比較好用,在查詢方法設計上可以靈活的根據 Criteria 的特點來方便地進行查詢條件的組裝。所以現在對 Hibernate Criteria 深入研究一下。《 Hibernate Reference 》及網上其它一些資料對 Criteria 已經做了很多介紹。本文主要是從 Criteria 的結構入手來進行分析。

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

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

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

    DetachedCriteria 來返回查詢結果。

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

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

    ??????

    1

    ?

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

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

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

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

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

    Example exampleUser =Example.create(u)

    .ignoreCase() // 忽略大小寫

    .enableLike(MatchMode.ANYWHERE);

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


    2

    ??????

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

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

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


    3

    ??????

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



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

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

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

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


    網站導航:
     

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

    常用鏈接

    留言簿(3)

    隨筆分類(20)

    隨筆檔案(17)

    相冊

    友情鏈接

    最新隨筆

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: A毛片毛片看免费| 一级人做人a爰免费视频| 久久久久久一品道精品免费看| 免费v片在线观看| 色窝窝亚洲av网| 日本特黄特色aa大片免费| 亚洲熟妇AV乱码在线观看| 成人au免费视频影院| 亚洲国产综合AV在线观看| 国产一区二区三区免费在线观看| 亚洲av日韩综合一区久热| 日韩毛片无码永久免费看| 老司机午夜在线视频免费观| 亚洲M码 欧洲S码SSS222| 一级毛片免费视频网站| 中文字幕中韩乱码亚洲大片 | 成人免费视频试看120秒| 国产免费网站看v片在线| 亚洲成AV人片在线观看无码 | 最近中文字幕免费2019| 亚洲一级毛片视频| 拨牐拨牐x8免费| 国产精品亚洲天堂| 国产亚洲成人在线播放va| 欧洲人免费视频网站在线| 国产免费人成在线视频| 人碰人碰人成人免费视频| 亚洲国产精品SSS在线观看AV| 久久精品无码专区免费青青| 国产亚洲精品影视在线| 亚洲国产人成精品| 免费无码成人AV在线播放不卡| 亚洲欧洲日产韩国在线| 国产一级淫片视频免费看| 免费在线看污视频| 亚洲精华液一二三产区| 国产亚洲精品岁国产微拍精品| 99精品视频免费观看| 国产成人亚洲精品91专区高清| 国产av无码专区亚洲av桃花庵| 成年女人男人免费视频播放|