Hibernate-HQL-Criteria-查询优化

1 查询总结

  1. oid查询-get
  2. 对象属性导航查询
  3. HQL
  4. Criteria
  5. 原生SQL

2 查询-HQL语法

2.1 基础语法

Hibernate-HQL-Criteria-查询优化

2.2 进阶语法

排序

Hibernate-HQL-Criteria-查询优化

条件

Hibernate-HQL-Criteria-查询优化

分页

Hibernate-HQL-Criteria-查询优化

聚合

 Hibernate-HQL-Criteria-查询优化

投影

Hibernate-HQL-Criteria-查询优化多表查询

Hibernate-HQL-Criteria-查询优化

SQL

 Hibernate-HQL-Criteria-查询优化

HQL

Hibernate-HQL-Criteria-查询优化

HQL语法

内连接

Hibernate-HQL-Criteria-查询优化

Hibernate-HQL-Criteria-查询优化

 

 左外链接

Hibernate-HQL-Criteria-查询优化

右外连接

Hibernate-HQL-Criteria-查询优化

3 查询-Criteria语法

3.1 语法

基本

Hibernate-HQL-Criteria-查询优化

条件

Hibernate-HQL-Criteria-查询优化

分页

Hibernate-HQL-Criteria-查询优化

排序

Hibernate-HQL-Criteria-查询优化

统计

Hibernate-HQL-Criteria-查询优化

3.2 离线查询

 非离线

Hibernate-HQL-Criteria-查询优化

离线

Hibernate-HQL-Criteria-查询优化

演示

Hibernate-HQL-Criteria-查询优化

4 查询优化

4.1 类级别查询

get方法:没有任何策略.调用即立即查询数据库加载数据.

load方法: 应用类级别的加载策略

Hibernate-HQL-Criteria-查询优化

lazy(默认值):true, 查询类时,会返回代理对象.会在使用属性时,根据关联的session查询数据库.加载数据.

lazy:false. load方法会与get方法没有任何区别.调用时即加载数据.

 结论:为了提高效率.建议使用延迟加载(懒加载)

注意:使用懒加载时要确保,调用属性加载数据时,session还是打开的.不然会抛出异常

4.2 关联级别查询

集合策略

Hibernate-HQL-Criteria-查询优化

关联属性策略

Hibernate-HQL-Criteria-查询优化

结论:为了提高效率.fetch的选择上应选择select. lazy的取值应选择 true. 全部使用默认值.

no-session问题解决: 扩大session的作用范围.

Hibernate-HQL-Criteria-查询优化