隨筆 - 9, 文章 - 0, 評論 - 3, 引用 - 0
          數(shù)據(jù)加載中……

          Hibernate的檢索方式

           

          Hibernate的檢索方式Hibernate的檢索方式:
           1.導(dǎo)航對象圖檢索方式
              根據(jù)已經(jīng)加載的對象,導(dǎo)航到其他對象.
           2.OID檢索方式
              按照對象的OID來檢索對象
           3.HQL檢索方式
              使用面向?qū)ο蟮腍QL查詢語言.
           4.QBC檢索方式
              使用QBC API來檢索對象,這種API封裝了基于字符串形式的查詢語句,提供了更加面向?qū)ο蟮慕涌?
              它主要由Criteria接口,Criterion接口和Expression類組合,它支持在運(yùn)行時(shí)動(dòng)態(tài)生成的查詢語句:
              以下程序代碼用于檢索姓名以字符"T"開頭,并且年齡為21的Customer對象:
                ///調(diào)用Session的createCriteria()方法創(chuàng)建一個(gè)Criteria對象
                Creteria criteria=session.createCriteria(Customer.class);
                //設(shè)置查詢條件,Expression類提供了一系列用于設(shè)定查詢條件的靜態(tài)方法,這些靜態(tài)方法都
                 返回Criterion實(shí)例,每個(gè)Criterion實(shí)例代表一個(gè)查詢條件
                Criterion criterion1=Expression.like("name","T%");
                Criterion criterion2=Expression.eq("age",new Integer(21));
                ////Criteria的add()方法用于加入查詢條件.
                criteria=criteria.add(criterion1);
                criteria=criteria.add(criterion2);
                /////調(diào)用Criteria的list()方法執(zhí)行查詢語句,該方法返回List類型的查詢結(jié)果,在List集合中存放
                  了符合查詢條件的持久化對象
                List result=criteria.list();
                對于以上代碼執(zhí)行的SQL語句為:select * from CUSTOMERS where NAME like"T%" and AGE=21;
                Criteria接口支持方法鏈編程風(fēng)格,它的add()方法返回自身實(shí)例,而不是返回void類型
           5.本地SQL檢索方式:
           6.QBE檢索方式:
             它是QBC的子功能,QBE允許先創(chuàng)建一個(gè)對象樣板,然后檢索出所有和這個(gè)樣板相同的對象.如下:
              //創(chuàng)建一個(gè)CUstomer樣板對象
                Customer exampleCustomer=new Customer();
                exampleCustoemr.setAge(21);
                List result=session.createCriteria(Custoemr.class).add(Example.create(exampleCustomer)).list();
              因?yàn)镼BE只支持"="和"like"比較運(yùn)算符,所以一般采用HQL檢索方式或者QBC檢索方式.

          分頁查詢:
            Query和Criteria接口都提供了用于分頁顯示查詢結(jié)果的方法:
             setFirstResult(int firstResult):設(shè)定從哪一個(gè)對象開始檢索,參數(shù)firstResult表示這個(gè)對象在查詢結(jié)果中的索引位置,索引位置的起始值為0,
             在默認(rèn)情況下,Query和Criteria接口從查詢結(jié)果中的第一個(gè)對象,也就是索引位置為0的對象開始檢索.
            setMaxResult(int maxResults):設(shè)定一次最多檢索出的對象數(shù)目,在默認(rèn)情況下,Query和Criteria接口檢索出查詢接口中所有的對象

          檢查單個(gè)對象:
           Query和Criteria接口都提供了以下用于執(zhí)行查詢語句并返回查詢結(jié)果的方法:
          list()方法:返回一個(gè)List類型的查詢結(jié)果,在List集合中存放了所有滿足查詢條件的持久化對象
           uniqueResult()方法:返回單個(gè)對象.
           在某些情況下,如果只希望檢索出一個(gè)對象,可以先調(diào)用Query或Criteria接口的setMaxResult(1)方法,把最大檢索數(shù)目設(shè)為1,然后調(diào)用uniqueResult()方法,
           該方法返回一個(gè)Object類型的對象.
           // 采用HQL檢索方式
           Customer customer=(Customer)session.createQuery("from Customer c order by c.name asc").setMaxResults(1).uniqueResult();
           //采用QBC檢索方式
           Customer customer=(Customer)session.createCriteria(Customer.class).add(Order.asc("name")).setMaxResults(1).uniqueResult();

          posted on 2007-10-29 16:04 空杯 閱讀(1017) 評論(0)  編輯  收藏 所屬分類: Hibernate


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 五指山市| 大渡口区| 吕梁市| 新余市| 双鸭山市| 曲水县| 阿拉尔市| 长乐市| 五莲县| 毕节市| 那曲县| 梁河县| 玉林市| 长寿区| 无为县| 商都县| 临泽县| 万载县| 偏关县| 马尔康县| 文昌市| 昆山市| 普宁市| 东乡| 南阳市| 金昌市| 南昌市| 美姑县| 河西区| 柳河县| 定陶县| 连平县| 江城| 玉屏| 区。| 景泰县| 正宁县| 扶绥县| 新化县| 新郑市| 盘山县|