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 | 建立持久化类之间的多对多关联关系 |
注:下划线是几乎不用的注解 没意义