• Hibernate查询


    一.掌握Hibernate检索策略?

    检索(查询)策略分为3类:

    立即加载(lazy=“false”)—— 不管用户是否使用该数据始终执行查询。

    延迟加载(lazy=“true”)—— 用户使用的时候,才执行查询;否则不查询。

    注意:延迟加载必须在session关闭之前使用。

    迫切左外连接(outer-join=“true”、fetch=“join”)—— 联合查询(推荐使用方式)。

    总结:查询数据时,立即、延迟都会生成多条SQL语句;迫切左外连接会使用联合查询,只会生成一条SQL语句。

    batch-size:表示进行批量检索数据。(将多条SQL语句合并成一条SQL(使用in关键字进行查询));(只有立即、延迟加载时有效)

    二.掌握HQL查询?

    HQL查询语句:Hibernate中支持的查询语句。

    2.1 为什么需要使用HQL查询,而不是使用标准SQL进行查询?

    Hibernate需要支持所有数据库的查询。

    2.2 如何使用HQL进行查询?

    使用Session中的Query对象,进行查询。

    注意:HQL语句查询的是类、属性(而不是表名、列名);HQL中的关键字不区分大小写,但是类、属性严格区分大小写。

    常见的HQL查询语句:

    查询指定列:

    方式一:

    select 属性名1,属性名2,..... from 类名;

    特点:返回一个List,集合中存放Object的数组。

    方式二:

    select new 类名(属性名1,属性名2,..... ) from 类名;

    特点:返回一个List,集合中存放指定的对象(前提:必须具有对应的构造函数)。

    关联关系查询:

    示例:from Emp e where e.dept.dname like '%软%'

    连接查询:显示关联(HQL中含有join关键字)、隐式关联(利用Xxx.hbm.xml配置(fetch=“join”、outer-join=“true”)、不使用join关键字,但是查询了另外一张表的数据)

    高级特性:

    分页查询:setFirstResult() 、 setMaxResult();

    占位符:使用“?”号占位;(可以避免SQL的注入漏洞);占位从下标0开始(JDBC中是从1开始的)。

    三.掌握本地SQL查询?

    针对某一种数据库提供的查询操作,称为本地SQL。(影响:数据库通用性)

    示例:

    List<Object[]> list = session.createSQLQuery("select *,DATEADD(DD, 5, GETDATE()) as ctime from dept").list();

            //获取集合中,存放数据的类型

            for(Object[] obj : list){

                for(Object o : obj){

                    System.out.print(o+"\t");

                }

                System.out.println();

            }

    四.了解面向对象查询(Criteria查询)?

    一点SQL都不会的人群;查询SQL条件比较复杂的情况。

    List<Emp> list = session.createCriteria(Emp.class)

            .add(Restrictions.eq("ename", "许褚"))

            .add(Restrictions.gt("eid", 10))

            .setFirstResult(0)

            .setMaxResults(5)

            .list();

           

    for(Emp e : list){       System.out.println(e.getEname()+":"+e.getDept().getDname())

    }

  • 相关阅读:
    java Udp协议简单的通讯
    java 简单装饰设计模式
    java 简单的拷贝文件夹
    java 简单的文件操作
    java 简单的进水放水
    java 洗牌 发牌
    less的在线安装
    移动端缩放设置
    less.js插件监听
    less使用
  • 原文地址:https://www.cnblogs.com/huzi007/p/2811868.html
Copyright © 2020-2023  润新知