`
jiagou
  • 浏览: 2608613 次
文章分类
社区版块
存档分类
最新评论

Hibernate 之 HQL

 
阅读更多

通过对Hibernate框架的学习,已经慢慢的对Hibernate有了进一步的了解,接下来我们要说的是Hibernate Qusery Language(HQL),如果你正在学习SSH框架,SQL对你来说也是不陌生的,通过学习会发现HQLSQL有很多的相似之处.

计算机生成了可选文字:汾笃JU,月lr卜曰叱钊〕

在学习的过程中通过对比找到两个知识点的联系,包括相同点和不同点,通过重点学习那些不同点将会大大减少我们学习的成本.因为HQLSQL有很大的相似处,尤其是语法,所以HQL的学习建立在SQL的基础之上,那对HQL的掌握变非常容易.

HQLSQL不同点

第一点(从宏观的角度)

SQL是基于关系型数据库模型,没有面向对象的特点,HQL是面向对象编程跟数据库关系的组合.因为这个不同点即HQL所具有的面向对象的特点.便有了接下来的不同之处.

第二点(操作内容):

SQL更关注存在数据库中的表,并对表的一些操作,HQL更关心对象及其属性的操作.

第三点(处理的关系):

SQL更多处理的是表和表之间的关系,HQL则是处理对象之间的关系.

以上的对比是从一个宏观的角度对他们的对比,接下来我们将会从HQL具体的语法和简单的运用来逐渐掌握了HQL的基本用法.

  • 需要说明的是在hql中关键字是不区分大小写,通常小写但是类的名称和属性名称必须区分大小写,因为面向对象的特征.
    • 例如:fromStudent swhere s.id<2fromStudent swhere s.ID<2是不一样的.
  • from子句
    • 例如:HQL"from Student".相当于Sql"select * from Student"从这点可以看出来HQLSQL简洁了一些.
  • 带参数查询(两种查询方式)

采用?方式,查询学号为1,2的学生

Liststudents = session.createQuery("select s.id, s.name from Student s wheres.id in(?, ?, ?, ?, ?)")

.setParameter(0,1)

.setParameter(1,2)

.list();

采用 :参数名方式,查询学号为1,2的学生

Liststudents = session.createQuery("select s.id, s.name from Student s wheres.id in(:ids)")

.setParameterList("ids",new Object[]{1, 2})

.list();

  • 查询数量(查询所有学生数目)
    • Long count = (Long)session.createQuery("select count(*) from Student").uniqueResult();
    • 另一种查询方式

Longcount = (Long)session.createQuery("select count(*) from Student")

.setMaxResults(1)

.uniqueResult();

  • HQL中查询原生sql语句
    • List students = session.createSQLQuery("select * from t_student").list();
  • 分页查询

Liststudents = session.createQuery("from Student")

.setFirstResult(1)

.setMaxResults(2)

.list();

  • ……

以上是对HQL的一些基本的介绍,建议在进行Hibernate的过程中可以在Hibernate核心配置文件配上以下属性:

<propertyname="hibernate.show_sql">true</property>

这样在程序执行HQL语句时可以看到具体的Sql执行情况.通过查看Sql的执行情况我们也会看到Hibernate存在的一些问题,例如N+1问题.

希望通过以上的内容能够对HQL有个基本认识,接下来还需要在实践中提高.

HQL的一句话总结为:面向对象的SQL.

分享到:
评论

相关推荐

    hibernate查询之HQLhibernate查询之HQL

    Hibernate查询之HQL是ORM(对象关系映射)框架Hibernate中的一个重要组成部分,它是一种面向对象的查询语言,与SQL有着显著的区别。HQL允许开发者使用类名和属性而不是表名和列名进行查询,从而更好地适应面向对象的...

    Hibernate之HQL查询

    在Hibernate中,HQL(Hibernate Query Language)是其内置的一种面向对象的查询语言,它是SQL的面向对象版本,用于检索和操作持久化对象。HQL查询的使用极大地提高了开发效率,因为它将数据操作与具体的数据库结构...

    weblogic12 下 org.hibernate.hql.ast.HqlToken

    ### WebLogic 12下org.hibernate.hql.ast.HqlToken冲突解决方案 在使用WebLogic 12部署应用程序时,可能会遇到与`org.hibernate.hql.ast.HqlToken`相关的异常问题。这种异常通常与Hibernate版本之间的不兼容性有关...

    hibernate-HQL语句大全

    hibernate-HQL语句大全

    Hibernate_HQL.rar_hibernate HQL_hibernate hql src

    对hibernate的hql进行了详尽的讲解

    Hibernate(HQL、QBC查询)源码

    Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码

    Hibernate-HQL.rar_HQL_hibernate hql

    本篇文档将深入探讨Hibernate中的HQL(Hibernate Query Language),一种面向对象的查询语言,它提供了与SQL类似的语法,但更贴近于面向对象的思维模式,使得开发者可以更加便捷地进行数据查询。 一、HQL简介 HQL是...

    Hibernate-HQL语句多对多写法

    "Hibernate-HQL语句多对多写法" Hibernate 是一个流行的 Java 持久层框架,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地与数据库交互。但是,在使用 Hibernate 时,我们经常会遇到多对多关系的...

    Hibernate hql查询语法总结

    《Hibernate HQL查询语法详解》 Hibernate,作为Java领域中广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。其内置的HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以类和...

    Hibernate查询语言HQL.PPT

    Hibernate 查询语言 HQL Hibernate 查询语言 HQL 是一种面向对象的查询语言,用于检索对象。它提供了灵活多样的查询机制,包括导航对象图、通过标识符检索、使用 HQL 检索对象、使用 Hibernate 条件 API 和使用本地...

    hibernate 查询?Hibernate的HQL查询

    Hibernate作为流行的Java ORM框架,它的查询机制是其独特之处。其中,Criteria Query允许通过对象模型进行查询,提高了代码的可读性,但不支持所有复杂的SQL操作。而HQL则弥补了这一不足,它是一种面向对象的查询...

    Hibernate的HQL讲解

    对Hibernate中HQL语句的讲解

    hibernate3-hql.jar

    hibernate3-hql.jar .

    Hibernate 课件_HQL

    ### Hibernate 课件_HQL 知识点解析 #### HQL查询 - **定义**: HQL(Hibernate Query Language)是一种面向对象的查询语言,它的语法类似于SQL,但不同于直接操作数据库表,HQL操作的是持久化的Java对象。这意味着...

    Hibernate的HQL查询

    hibernate hql 语法学习的文档

    hibernate的HQL的jar

    标题提到的“hibernate的HQL的jar”,实际上是指在使用Hibernate框架时,需要包含特定的Hibernate库文件,其中包含了对HQL支持的实现。这些jar文件通常包含在Hibernate的发行版中,它们提供了执行HQL查询所需的类和...

    hibernateHQL关联查询

    其中,HQL(Hibernate Query Language)作为Hibernate提供的查询语言之一,允许开发者以接近面向对象的方式编写查询语句。本文将重点介绍Hibernate中的关联查询,并深入探讨HQL关联查询的实现原理及应用场景。 ####...

    hibernate的HQL的模糊查询

    在Java的持久化框架Hibernate中,HQL(Hibernate Query Language)是专为ORM(对象关系映射)设计的一种SQL方言,用于对数据库进行操作。HQL模糊查询是开发者在进行数据检索时常用的一种功能,它允许我们根据部分...

    hibernate-hql 资料大全

    Hibernate HQL,全称为Hibernate Query Language,是Hibernate框架中用于操作对象关系映射(ORM)的查询语言。它类似于SQL,但设计目的是针对Java对象,而不是数据库表。HQL允许开发者以面向对象的方式编写查询,...

Global site tag (gtag.js) - Google Analytics