• 第三讲 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查询。

  • 相关阅读:
    启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
    处理textarea的空格和换行
    微信内置页实现自动拨号到页面的功能
    兼容ie的渐变css
    H5压缩图片上传(FileReader +canvas)
    css样式写一个小三角
    js禁止选中图片和文字
    js解决浏览器打印自动分页的问题
    IE8透明度问题
    在css加载完毕后自动判断页面是否加入css或js文件
  • 原文地址:https://www.cnblogs.com/lljj/p/Hibernate03.html
Copyright © 2020-2023  润新知