Hibernate 的查询方式
1.对象导航查询
2. 对象导航查询
3.hql 查询
查询所有
条件查询
排序查询
分页查询
投影查询
聚集函数查询
4.qbc查询
查询所有
条件查询
排序查询
分页查询
统计查询
5.hql 多表查询
(1) mysql 多表查询回顾
(2) hql 多表查询
6 hibernate 的检索策略
(1)概念
(2) 具体操作
Hibernate 查询方式:
1.对象导航查询
(1)根据id 查询某个客户 ,再查询这个客户里面所有的联系人.
- OID导航查询
(1) 根据id 查询某一条记录,返回对象
3.hql 查询
(1) Query 对象,写hql 语句实现查询
4 .qbc查询
(1) Creteria 对象
5.本地SQL查询
(1) SQLQuery 对象 ,使用普通SQL实现查询
对象导航查询
1.查询某个客户里面所有联系人过程,使用对象导航实现
3. 代码

4. OID导航查询
根据id 查询某一条记录,返回对象
(1) 调用session 里面的get方法实现

HQL 查询
hql :hibernate query language,hibernate 提供一种查询语言,hql 语言与普通sql 很相似.
区别: 普通sql 操作数据库和字,hql操作的是实体类和属性.
. 常用的hql 语句
(1) 查询所有: from 实体类名称
(2) 条件查询: from 实体类名称 where 属性名称=?
(3) 排序查询: from 实体类名称 order by 实体类属性名称 asc/desc
使用hql 操作时候使用Query 对象
(1) 创建Query 对象,写hql 语句
(2) 调用query 对象里面的方法得到结果.
2.查询所有:from 实体类名称

条件查询
5. hql 条件查询语句写法:
常用的hql
(1) from 实体类名称 where 实体类属性名称=? and 实体类属性名称=?
from 实体类名称 where 实体类属性名称like ?
2.代码:

模糊查询

排序查询
6. hql 排序语句语法
(1) from 实体类名称 order by 实体类属性名称 asc/desc

分页查询
7. mysql 实现查询
(1) 使用关键字limit 实现

(2) hql 中实现分页
(1) hql 操作中,在语句里面不能写limit ,hibernate的Query 对象封装两个方法实现分页操作

投影查询
1.投影查询: 查询不是所有字段,而是部分字段的值
2.投影查询的HQL 语句写法
(1)select 实体类属性名称1,实体类属性2 from 实体类名称
(2) select 后面不能写 * 不支持
代码实现

聚集函数查询
1. 常用的聚集函数
(1) count ,sun,avg,max,min
2.hql 聚集函数语句写法
查询表记录数
select count(*) from

不能直接强转为int 类型负负责会类型转换异常

QBC 查询
1.使用hql 查询需要写hql 语句实现 ,但是使用qbc时候不需要写语句了,使用方法实现
2. 使用qbc时候,操作实体类和属性
3. 使用qbc, 使用Criteria对象
查询所有
1 创建Criteria对象
2.调用方法得到结果

**条件查询 **
qbc当中的方法

-
没有语句书写 ,使用的封装方法实现


** 排序查询 **


** 分页查询 **

开始位置公式: (当前页 -1) * 每页记录数
** 统计查询 **

**离线查询 ** -
servlet 调用service ,service 调用dao
(1) 在dao 里面对数据库进行CRUD 操作
(2) 在dao 里面使用的是hibernate 框架,使用hinernate 框架时候,调用session 里面的方法实现功能.

HQL 多表查询
MySQL多表查询
1.内连接

2.左外连接

3.右外连接

HQL实现多表查询
Hql多表查询
(1) 内连接
内连接查询hql 语句写法:以客户和联系人为例:
(1) from Customer c inner join c.SetLinkMan

返回list, list里面每部分是数组形式

-
演示迫切内连接
(1)内连接和迫切内连接连接底层实现一样的
(2)区别:使用内连接返回list 中每部分是数组,迫切内连接返回list每部分是对象
(3) hql 语句写法
from Customer c inner join fetch c.SetLinkMan

(2)左外连接
左外连接hql 语句
(1) from Customer c inner left outer join c.SetLinkMan
迫切左外连接
(2) from Customer c left outer join feach c.SetLinkMan
左外连接返回list 中每部分返回的是数组

迫切左外连接返回 list 中每部分返回的是对象

(3)右外连接
右边连接hql 语句
from Customer c right left outer join c.SetLinkMan
迫切右外连接
from Customer c right left outer join feach c.SetLinkMan
Hibernate 检索策略
检索策略的概念
1.hibernate 检索策略分为两类:
(1) 立即查询: 根据id查询,调用Get方法,一调用get 方法马上发送语句查询查询数据库.
代码:

(2) 延迟查询: 根据id 查询,还有load方法,调用load方法,不会马上发送查询数据,只要得到对象里面的值时候才会发送语句查询数据库
代码:

2.延迟查询
(1) 类级别延迟:根据id查询返回实体类对象,调用load方法不会马上发送语句.
(2) 关联级别延迟:查询除某个客户,再查询这个客户的所有联系人.查询客户的所有联系人的过程是否需要延迟,这个过程称为关联级别延迟.

检索策略set 的lazy 和feach 属性

关联级别延迟操作
1.在映射文件中配置实现
(1)根据客户得到的联系人,在客户映射文件中配置
2.在Set 标签上使用属性
(1) feach : 值 select(默认)
(2) lazy: 值
-true :延迟(默认)
-false:不延迟
-exsra 极其延迟


(1)调用get之后,发送两条SQL语句


(1) 及其懒惰,要什么值给什么值

批量抓取
1.查询所有的客户,返回list集合,遍历list集合,得到每个客户,得到每个客户的所有联系人
(1)上面操作的代码,会多次发送SQL语句

2.在客户映射文件中,Set 标签配置
(1) batch-size 值,值越大发送语句越少


本文详细介绍了Hibernate的五种主要查询方式:对象导航、HQL、QBC、本地SQL查询以及HQL多表连接。涵盖了查询所有、条件查询、排序、分页、投影和聚集函数,以及如何利用Criteria和Query对象进行复杂操作。此外,还讨论了检索策略和延迟加载,以及如何在多表查询中实现内连接、外连接和延迟加载优化。
3万+

被折叠的 条评论
为什么被折叠?



