HQL的连接查询

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 建立持久化类之间的多对多关联关系

注:下划线是几乎不用的注解 没意义

-------------本文结束感谢您的阅读-------------
0%