luxhua 发表于 2013-1-28 19:30:22

Hibernate的查询方案

Hibernate的查询方案
    1、利用Session接口提供的load方法或者get方法
   

   2、Hibernate提供的主要查询方法
      1)Criteria Query(条件查询)的步骤:
         (1)通过Session来创建条件查询对象Criteria
            Criteria criteria = session.createCriteria(Course.class);
         
         (2)构建条件---创建查询条件对象Criterion
            Criterion criterion1 = Property.forName("id").ge(39);//通过 Property来创建
            Criterion criterion2 = Restrictions.le("cycle", 5); //通过Restrictions来创建
         
         (3)查询对象关联条件
             criteria.add(criterion1);
         
          (4)执行条件查询
             List<Course> courses = criteria.list();
   
      2)HQL(Hibernate Qurey Language)
         特点: 语法上与SQL类似; 完全面向对象的查询; 支持继承、多态、关联
         (1) FROM子句
             例如:查询所有的学生实例
             Query query=session.createQuery("from Student"); query.list();
      
      (2) SELECT子句
             选择哪些对象和属性返回到结果集
          A、SELECT语句后可以跟多个任意类型的属性,返回结果保存在Object类型的数组中
             //A、B、C、都是查询学生的姓名和年龄
             Query query=session.createQuery("select stu.name,stu.age from Student as stu");
             List<Object[]> os=query.list();//返回的Object数组中有两个元素,第一个是姓名,第二个是年龄
         
          B、SELECT语句后可以跟多个任意类型的属性,返回结果也可以保存在List中
             Query query=session.createQuery
               ("select new List(stu.name,stu.age) from Student as stu");
             List<List> lists=query.list();
         
         C、SELECT语句后可以跟多个任意类型的属性,返回结果也可以是一个类型安全的POJO对象
             Query query=session.createQuery
               ("select new Student(stu.name,stu.age) from Student as stu");
             List<Student> stuList=query.list();//注意:Student类必须有Student(String,int)的构造方法
         
         D、SELECT子句中可以使用聚集函数、数学操作符、连接
             支持的聚集函数:avg、sum、min、max、count ….
         (3) WHERE子句,限制返回结果集的范围
         (4) ORDER BY子句,对返回结果集进行排序
       3)Native SQL(原生SQL查询)
         可移植性差:资源层如果采用了不同的数据库产品,需要修改代码---非不得已,不推荐使用
         步骤一:调用Session接口上的createSQLQuery(String sql)方法,返回SQLQuery
         步骤二:在SQLQuery对象上调用addEntity(Class pojoClass) //设置查询返回的实体
         例如:SQLQuery query =session.createSQLQuery(“select * from student limit 2,10”)
                query.addEntity(Student.class);
                List<Student> stuList=query.list();
页: [1]
查看完整版本: Hibernate的查询方案