• 第三讲 Hibernate查询


    一. Hibernate检索策略?

    lazy="false" 立即加载 

    lazy="true" 延迟加载 

    连接查询

    fetch="join"  

    outer-join=true

    批量检索数据

    batch-size=3-10 

    注意:批量查询数据Hibernate会自动将SQL语句,转换成in()或or查询;在数据库中in和or查询,称为全表扫描,性能低下。

    二. Hibernate中的查询语句HQL?

    HQL语句:

    关键字不区分大小写,类、属性必须严格区分大小写。

    1. 查询指定字段?

    Select 属性名,属性名 from 类名;

    注意返回List,List中存放数组。

    2. 查询指定字段,并转换成对象?

    Select new 类(属性名,….) from 类名;

    注意:返回List,List中存放指定对象。(类中必须提供对应的构造方法)

    3. 关联查询?

    from 类名 join 属性(类的属性)

    也可以使用配置文件进行连接查询:fetch=“join” |  outer-join=“true”

    示例:

    select new Emp(e.ename,d.dname) from Emp as e join e.dept as d where e.dept.dname='市场部'

     

    4. 聚合函数、比较运算、模糊查询。。。。。

    跟标准SQL完全一样。

    5. HQL语句使用占位符?

    跟JDBC中类似。(区别:JDBC从1开始占位,HQL中从0开始占位)

    6. 分页查询?

    setFirstResult() —— 设置第一行的位置

    setMaxResult()—— 最大返回条数

     

    三. Hibernate中的本地SQL语句?

    优点:如果需要使用数据库本身提供的特殊处理函数。(convert(),datediff()等);必须使用本地化SQL语句。

    问题:不能将查询结果转换成类的对象;而是将结果转换成Object的数组,再存入List。

    session.createSQLQuery("原始的SQL语句(查询)").list();

     

    四. Criteria 查询

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

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

    .add(Restrictions.eq("ename", "王五"))

    .list();

     

    总结:

    Hibernate最常用的查询:HQL查询(99%)。

    特殊的数据库函数:本地SQL查询。

    完全避免SQL,按照对象的方式进行查找:使用Criteria查询。

  • 相关阅读:
    java 反编译和文档生成器
    java 导入自定义类
    hust 1010 最短循环节点
    KMP算法
    hiho 第119周 最大权闭合子图
    2007 Asia
    hiho 第1周 最长回文子串
    hiho 第118周 网络流四·最小路径覆盖
    hiho 第117周 二分图多重匹配,网络流解决
    成为一名JAVA高级工程师你需要学什么
  • 原文地址:https://www.cnblogs.com/lljj/p/Hibernate03.html
Copyright © 2020-2023  润新知