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

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

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

    konhon

    忘掉過去,展望未來。找回自我,超越自我。
    逃避不一定躲的過, 面對不一定最難過, 孤單不一定不快樂, 得到不一定能長久, 失去不一定不再擁有, 可能因為某個理由而傷心難過, 但我卻能找個理由讓自己快樂.

    Google

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks
    最近在項目中使用 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 提供了那些類和方法來滿足開發中查詢條件的創建和組裝,其結構層次如何。這樣使用起來便可得心應手。

    posted on 2006-12-17 03:18 konhon 優華 閱讀(1531) 評論(1)  編輯  收藏

    Feedback

    # re: Hibernate 深入研究之 Criteria 2006-12-17 04:40 中東
    看了你寫的文章,覺得比較深入,想問一下,做表報表在hql、Criteria 以sql之間做選擇,(報表的功能較多,權限什么都有),那一個會更好一些,理由?  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 国产午夜成人免费看片无遮挡 | 亚洲综合精品一二三区在线| a级毛片毛片免费观看久潮喷| 亚洲国产精品国自产电影| 日本免费A级毛一片| 亚洲性无码AV中文字幕| 精品一区二区三区无码免费视频| 亚洲AV无码精品色午夜果冻不卡 | 国产a v无码专区亚洲av| 日本三级2019在线观看免费| 无码日韩人妻AV一区免费l| 亚洲校园春色另类激情| 久久久久亚洲AV无码专区桃色| 久久青草免费91观看| 亚洲中文字幕久久精品无码A| 亚洲熟妇无码八AV在线播放| 91麻豆国产免费观看| 黄色a级免费网站| xxx毛茸茸的亚洲| 亚洲一区中文字幕久久| 亚洲色偷偷狠狠综合网| 国产h视频在线观看网站免费| a视频在线免费观看| 亚洲人精品亚洲人成在线| 久久综合日韩亚洲精品色| 亚洲va中文字幕无码| 免费a级毛片无码a∨蜜芽试看| 在线a毛片免费视频观看| 4455永久在线观免费看| 中文字幕在线免费看线人| 美女被艹免费视频| 亚洲av色香蕉一区二区三区蜜桃| 老司机亚洲精品影视www| 国产成人免费a在线资源| 久久aⅴ免费观看| 无码人妻久久一区二区三区免费| g0g0人体全免费高清大胆视频| 男男黄GAY片免费网站WWW| 一个人看的免费高清视频日本| 好湿好大好紧好爽免费视频| 成在人线av无码免费高潮水|