[size=large]
HQL, 英文全称为:Hibernate Query Language, 是hibernate提供的一种类似于SQL的数据查询语句. 单纯session查询只能完成一些很简单的操作, 结合hql语句后, session几乎能够实现sql能实现的所有功能(我不清楚有没有不能实现的).
hql和sql之间有相同点, 也有不同点.
相同:主要是在语句的结构和关键字上: hibernate支持sql中的select from, group by ,having , order by, where关键字, 对关键字的大小写不敏感; hql支持max, min, count等组函数.
不同:hql的查询是面向对象的, 语句中没有表名和列名, 只有类名和属性名, 它们是大小写敏感的; 不支持select *; 不支持join on (可以用join, 但不能配着on).
下面以一些简单的例子介绍如何利用hql进行查询和删除操作.(更新和插入操作用session就行, 没必要用hql, 我从来没这样用过, 也不会用).
查询:
业务1:查询出所有专业(Major).
@Test
public void findAllMajors(){
String hql="from Major";//不用加也不能加select *
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery(hql);//Query类的功能类似于jdbc中的Statement和PreparedStatement.
List<Major>majors=query.list();
System.out.println(majors);
HibernateSessionFactory.closeSession();
}
业务2:查询出id为1的专业.
@Test
public void findMajorById(){
String hql="from Major where id =?";
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery(hql);
query.setInteger(0, 1);
Major major=(Major) query.uniqueResult();
System.out.println(major);
HibernateSessionFactory.closeSession();
}
查询业务2由session单独完成更简单, 可业务1呢? 肯定要用hql了.
删除:
业务:删除名字为"math"的专业.
@Test
public void deleteMajorByName(){
String hql="delete from Major where name=?";
Session session=HibernateSessionFactory.getSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery(hql);
query.setString(0, "math");
query.executeUpdate();
tx.commit();
HibernateSessionFactory.closeSession();
}
(若有外键约束, 这样删是会报错的...)
代码里的方法就不介绍了, 因为它们的英文命名很直接地说出了它们的用途.
ps: 关于hibernate的文章就先告一段落. 接触hibernate还不到一个月, 受水平所限也只能介绍一些非常基本的东西. 听老师说hibernate是一个很难驾驭的框架,若用得不好,很容易拖慢程序的运行速度(我用SSH重构以前写的一个练习项目后也明显地感觉到了这一点, 数据查询速度与以前的jdbc相比明显地变慢了). 也是由于这个原因, hibernate在ssh这三大框架中使用的频率是最低的, 以后工作中可能用的比较少. 所以对于hibernate, 我感觉目前只要牢牢掌握这些基本知识就行了, 对于一些比较高级的特性及其使用, 如一级和二级缓存, 联合主键, 并发处理等只要有一个大体的了解即可. 若以后在工作时碰到不会的再查手册不迟.
最后再上传一个hibernate中文手册, 希望能帮到一些人...
[/size]
分享到:
相关推荐
《Hibernate HQL查询语法详解》 Hibernate,作为Java领域中广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。其内置的HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以类和...
这里的关键点在于使用`createQuery`方法创建了一个HQL查询对象,并通过`setString`方法设置参数值,最后通过`list`方法执行查询并获取结果列表。 #### 三、分页查询 分页查询在处理大量数据时非常有用,可以有效地...
Hibernate HQL 查询语句总结 Hibernate HQL 查询语句是 Hibernate 框架中的一种查询语言,它提供了更加丰富的和灵活的查询特性,具有类似标准 SQL 语句的查询方式,同时也提供了更加面向对象的封装。以下是 ...
### Hibernate HQL 查询详解 #### 一、HQL 概述 Hibernate 提供了一种非常强大的查询语言——HQL(Hibernate Query Language),它在语法上与 SQL 类似但功能更为强大,因为它支持面向对象的特性,例如继承、多态性...
hibernate HQL 查询教程 管理 Session ThreadLocal 接口的使用
### Hibernate HQL 关联查询详解 #### 一、引言 在进行数据库操作时,关联查询是必不可少的一部分,尤其在处理复杂的数据结构时更是如此。Hibernate作为一种流行的Java持久层框架,提供了强大的对象关系映射(ORM...
**Hibernate HQL查询** Hibernate Query Language(HQL)是Hibernate框架提供的一种面向对象的查询语言,它是基于Java的,但其语法与SQL类似,用于在Java应用中操作对象。HQL允许开发者用类名和属性名而不是表名和...
HQL查询是Hibernate的核心功能之一,它能让我们以类和对象的方式来查询数据。基本语法如下: ```java Query query = session.createQuery("from EntityName where property = ?"); query.setParameter(0, value); ...
本资料主要涵盖了Hibernate HQL查询的基本概念、语法以及实际应用。 1. **HQL概述** - HQL是Hibernate提供的面向对象的查询语言,与SQL类似,但更加面向对象,将数据库表映射为Java类,表中的行映射为类的对象。 ...
Hibernate HQL基础练习小列子+数据库
Hibernate 查询语言 HQL Hibernate 查询语言 HQL 是一种面向对象的查询语言,用于检索对象。它提供了灵活多样的查询机制,包括导航对象图、通过标识符检索、使用 HQL 检索对象、使用 Hibernate 条件 API 和使用本地...
以上内容涉及了使用 HQL 和 DetachedCriteria 进行查询、参数化查询、执行更新操作以及简单的统计查询等常见的 Hibernate 操作。这些知识点对于理解和掌握 Hibernate 框架的基本使用至关重要,同时也是开发基于 ...
### Hibernate HQL 基本查询详解 #### 一、HQL 概述 HQL (Hibernate Query Language) 是一种面向对象的查询语言,由 Hibernate 官方提供,用于简化数据库查询过程。与传统的 JDBC 方式相比,使用 HQL 进行数据库...
【标题】:深入理解Hibernate的查询机制:HQL查询 【描述】:在ORM框架Hibernate中,数据查询和检索是一个核心功能,它提供了多种查询方式,包括标准化对象查询(Criteria Query)、Hibernate查询语言(HQL)和原生...
对hibernate的hql进行了详尽的讲解
在Hibernate中,通过Session对象的createQuery或createSQLQuery方法创建HQL查询,然后调用list、uniqueResult、scroll等方法执行查询。执行过程中,Hibernate会自动进行类型转换和结果集的封装,极大地降低了开发...
下面是一个简单的Java程序示例,展示了如何在Java中使用Hibernate框架执行HQL查询: ```java import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate....
本程序“HibernateHql综合测试小程序”是针对Hibernate中的HQL(Hibernate Query Language)进行的一系列功能测试,涵盖了二十多种不同的HQL语句,旨在帮助开发者深入理解和熟练运用Hibernate的查询能力。...
1. **执行HQL查询**:在Java代码中,使用`Session`对象的`createQuery()`或`createNativeQuery()`方法创建HQL查询,然后调用`list()`或`uniqueResult()`等方法获取查询结果。 2. **处理查询结果**:将查询结果转换...