HQL的连接查询
HQL支持各种各样的连接查询
| 连接类型 | HQL语法 |
|---|---|
| 内联结 | inner join 或 join |
| 迫切内联结 | inner join fetch 或 join fetch |
| 左外连接 | left outer join 或 leftjoin |
| 迫切左外连接 | left outer join fetch 或 left join fetch |
| 右外连接 | right outer join 或 right join |
聚合函数
| 聚合函数 | 说明 |
|---|---|
| count() | 统计记录条数 |
| sum() | 求和 |
| max() | 求最大值 |
| min() | 求最小值 |
| avg() | 求平均值 |
子查询语句应用在HQl查询语句的where子句中
| 关键字 | 说明 |
|---|---|
| all | 返回的所有记录 |
| any | 返回的任意一条数据 |
| some | 和”any”意思相同 |
| in | 与”=any”意思相同 |
| exists | 至少返回一条记录 |
HQL提供了操作集合的函数或属性
| 函数或属性 | 说明 |
|---|---|
| size()或size | 获取集合中元素的数目 |
| minIndex()或minIndex | 对于建立了索引的集合,获得最小的索引 |
| maxIndex()或maxIndex | 对于建立了索引的几个 获得最大的索引 |
| minElement()或minElement | 对于包含基本类型元素的集合 获取最小值的元素 |
| maxElement()或maxElement | 对于包含基本类型元素的集合,获取最大值的元素 |
| elements() | 获取集合中的所有元素 |
Hibernate查询优化的策略
1.使用延迟加载等方式避免加载多余数据
2.通过使用连接查询,配置二级缓存,查询缓存等方式减少select语句数目
3.结合缓存机制 使用iterate()方法减少查询字段数及数据库访问次数
HQl优化
1.注意避免or,not,like使用不当导致的索引失效
2.注意避免having子句,distinct导致的开销
3.注意避免对索引字段使用函数或进行计算导致的索引失效
ibernate提供了注解来替代hbm.xml文件完成对象-关系映射
使用Hibernate注解的步骤如下:
1.使用注解配置持久化类以及对象关联关系
2.在Hibernate配置文件(hibernate.cfg.xml)中声明持久化类
注解含义以及作用
| 注解 | 含义和作用 |
|---|---|
| @Entity | 将一个类声明为一个持久化类 |
| @Table | 为持久化类映射指定表 |
| @Id | 明了持久化类的标识属性 |
| @GeneratedValue | 定义标识属性值的生成策略 |
| @SequenceGenerator | 定义序列生产器 |
| @Column | 将属性映射到列(字段) |
| @Transient | 将忽略这些属性 |
| @OneToOne | 建立持久化类之间的一对一关联关系 |
| @OneToMany | 建立持久化类之间的一对多关联关系 |
| @ManyToOne | 建立持久化类之间的多对一关联关系 |
| @JoinColumn | 和@ManyToOne配合,指定外键列 |
| @ManyToMany | 建立持久化类之间的多对多关联关系 |
注:下划线是几乎不用的注解 没意义