随笔 - 9, 文章 - 0, 评论 - 3, 引用 - 0
数据加载中……

Hibernate的检索方式

 

Hibernate的检索方式Hibernate的检索方式:
 1.导航对象图检索方式
    根据已经加载的对象,导航到其他对象.
 2.OID检索方式
    按照对象的OID来检索对象
 3.HQL检索方式
    使用面向对象的HQL查询语言.
 4.QBC检索方式
    使用QBC API来检索对象,这种API封装了基于字符串形式的查询语句,提供了更加面向对象的接口.
    它主要由Criteria接口,Criterion接口和Expression类组合,它支持在运行时动态生成的查询语句:
    以下程序代码用于检索姓名以字符"T"开头,并且年龄为21的Customer对象:
      ///调用Session的createCriteria()方法创建一个Criteria对象
      Creteria criteria=session.createCriteria(Customer.class);
      //设置查询条件,Expression类提供了一系列用于设定查询条件的静态方法,这些静态方法都
       返回Criterion实例,每个Criterion实例代表一个查询条件
      Criterion criterion1=Expression.like("name","T%");
      Criterion criterion2=Expression.eq("age",new Integer(21));
      ////Criteria的add()方法用于加入查询条件.
      criteria=criteria.add(criterion1);
      criteria=criteria.add(criterion2);
      /////调用Criteria的list()方法执行查询语句,该方法返回List类型的查询结果,在List集合中存放
        了符合查询条件的持久化对象
      List result=criteria.list();
      对于以上代码执行的SQL语句为:select * from CUSTOMERS where NAME like"T%" and AGE=21;
      Criteria接口支持方法链编程风格,它的add()方法返回自身实例,而不是返回void类型
 5.本地SQL检索方式:
 6.QBE检索方式:
   它是QBC的子功能,QBE允许先创建一个对象样板,然后检索出所有和这个样板相同的对象.如下:
    //创建一个CUstomer样板对象
      Customer exampleCustomer=new Customer();
      exampleCustoemr.setAge(21);
      List result=session.createCriteria(Custoemr.class).add(Example.create(exampleCustomer)).list();
    因为QBE只支持"="和"like"比较运算符,所以一般采用HQL检索方式或者QBC检索方式.

分页查询:
  Query和Criteria接口都提供了用于分页显示查询结果的方法:
   setFirstResult(int firstResult):设定从哪一个对象开始检索,参数firstResult表示这个对象在查询结果中的索引位置,索引位置的起始值为0,
   在默认情况下,Query和Criteria接口从查询结果中的第一个对象,也就是索引位置为0的对象开始检索.
  setMaxResult(int maxResults):设定一次最多检索出的对象数目,在默认情况下,Query和Criteria接口检索出查询接口中所有的对象

检查单个对象:
 Query和Criteria接口都提供了以下用于执行查询语句并返回查询结果的方法:
list()方法:返回一个List类型的查询结果,在List集合中存放了所有满足查询条件的持久化对象
 uniqueResult()方法:返回单个对象.
 在某些情况下,如果只希望检索出一个对象,可以先调用Query或Criteria接口的setMaxResult(1)方法,把最大检索数目设为1,然后调用uniqueResult()方法,
 该方法返回一个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 空杯 阅读(1003) 评论(0)  编辑  收藏 所属分类: Hibernate


只有注册用户登录后才能发表评论。


网站导航: