本篇教程主要介绍了如何在Hibernate框架下进行关联查询,特别是针对给定的两个Java类,即Order和OrderLine,它们分别表示订单和订单明细。首先,我们回顾了Hibernate的基本配置,强调了配置中关联关系的设置,如Order类中的customerName属性和OrderLine类中的order引用。
Hibernate支持两种主要的查询方式,即HQL(Hibernate Query Language)和Criteria API。HQL是一种基于SQL的查询语言,它允许开发者以更高级别的抽象方式编写查询,而无需了解底层数据库的具体细节。Criteria API则提供了一种面向对象的方法来构建和执行查询。
本章的核心任务包括:
1. 实现一个房屋查询DAO,用于根据特定条件查询房屋信息,如title模糊查询、街道精确查询和租金范围查询。
2. 查询特定联系人(例如,“伊先生”)发布的房屋信息所在的街道,这涉及到关联条件的设置。
3. 提供分页查询功能,以处理大量数据的展示。
4. 掌握如何使用HQL进行查询,包括四个步骤:获取Session、编写HQL语句、创建Query对象和执行查询。
5. HQL语句中,使用"from"关键字来指定实体类名(如"fromTblFwxx"),而不是数据库表名,并且可以选择性地使用"as"关键字为查询结果创建别名。
例如,对于查询特定联系人的房屋信息所在的街道,可能会编写这样的HQL语句:
```sql
SELECT DISTINCT f.street
FROM Fwxx f
JOIN f.customer c
WHERE c.name = '伊先生';
```
在这个例子中,我们通过JOIN操作将Order与OrderLine关联起来,然后在HQL中设置了关联条件customerName等于"伊先生"。
此外,HQL的灵活性体现在可以省略"select"子句,只需指定要查询的字段,如:
```sql
FROM Fwxx f
WHERE c.name = '伊先生'
AND f.street IN (SELECT street FROM Fwxx WHERE customerName = '伊先生');
```
本章的目标是理解为何在Hibernate中选择使用HQL,以及如何利用其强大功能进行高效、灵活的数据查询,从而提高开发效率和代码的可读性。通过学习和实践这些内容,读者能够熟练掌握Hibernate查询的相关技术。