• Hibernate的检索


    一,hibernate的检索策略

       1,类级别的检索策略 

        默认 <class>的属性 lazy="ture" 懒加载

       2,属性的检索策略

        <set>的属性

         lazy:懒加载; batch-size: 设定批量检索的数量; fetch: 抓取策略 ,select ,join.subselect. 默认为select 会发送多条sql语句,设置为join时 

          hibernate只发送一条SQL查询语句 此时lazy属性失效。

    二,hibernate的检索方式

       1,导航对象图检索方式:即根据已经加载的对象,导航到与其相关的对象上,比如一对多中 1的一方。

       2,按照OID来检索对象,如session.get(**.class,1);

       3,HQL查询,使用面向对象的HQL查询语言。

       4,使用QBC API来检索对象,该API封装了基于字符串的SQL语句

       5,使用 本地数据库SQL语句 检索数据。

       HQL查询

        .创建Query对象

         String hql="from Order o where o.orderName=? And o.customer=? ";

         Query query=session.createQuery(hql);

        .绑定参数

         query.setString(0, "订单A");

         query.setInteger("id", 753664);

         query.setEntity(1, customer);

          可以使用 ? ,命名参数 来传参数,参数也可以为对象

        .执行查询

         List<Order>list=query.list();

        补充: 

          分页查询

           query.setFirstResult((pageNo-1)*pageSize).setMaxResults(pageSize);

        QBC查询,就是通过使用Hibernate提供的query by criteria API 可以实现复杂的sql查询

         .创建criteria对象

          Criteria c=session.createCriteria(Animal.class);

         .设置查询条件

          c.add(Restrictions.eq("name", "动物1"));

         .查询

          List<Animal>list=c.list();

        本地SQL查询

         .编写SQL语句

          String sql="select * from ANIMAL a where a.NAME= :na";

         .创建SQLQuery对象

          SQLQuery sqlq=session.createSQLQuery(sql);

          sqlq.setString("na", "动物1");

         .查询数据

          List<Animal>list=sqlq.list();

  • 相关阅读:
    YYC松鼠视频pro版安装实操001
    YYC松鼠视频短信对接教程
    此处指讲解自定义的一些目录结构及组件-yyc松鼠短视频系统
    APP启动无视频数据-YYC松鼠短视频系统
    后台提示登录失败----YYC松鼠短视频开源
    C++静态成员变量和静态成员函数
    内联函数和宏定义的区别
    C++中的接口继承和实现继承
    拷贝构造函数(define)
    类的封装
  • 原文地址:https://www.cnblogs.com/m01qiuping/p/6390947.html
Copyright © 2020-2023  润新知