首页 > 经验记录 > java > hibernate的HQL、Criteria、标准SQL三种查询方式实现、对比、解析

hibernate的HQL、Criteria、标准SQL三种查询方式实现、对比、解析

 

HQL:

HQL(Hibernate Query Language)是hibernate专门用于查询数据的语句,有别于SQL,HQL 更接近于面向对象的思维方式。

比如使用的是类的名字而非表格的名字

使用流程:

1. 首先根据hql(createQuery() )创建一个Query对象
2. 设置参数(和基1的PreparedStatement不一样,Query是基0的)
3. 通过Query对象的list()方法即返回查询的结果了。

 

Criteria

使用Criteria进行数据查询。
与HQL和Criteria的区别是Criteria 完全是 面向对象的方式在进行数据查询,将不再看到有任何sql语句的痕迹

使用流程:
1. 通过session的createCriteria创建一个Criteria 对象
2. Criteria.add 增加约束。 在这儿增加一个对name的模糊查询(like)
3. 调用list()方法返回查询结果的集合

 

标准SQL查询

通过标准SQL语句进行查询
Hibernate依然保留了对标准SQL语句的支持,在一些场合不好使用HQL和Criteria时,比如多表联合查询。就可以用标准SQL语句自己写。

 

由于标准SQL语句可能返回各种结果,hibernate也不知道你写了个啥,所以返回值是一个List<Object[]>List中的每一个对象数组代表一行数据,对象数组中的每一个对象代表该行每一列的数据

所以要取出所有的数据的话,需要进行嵌套for循环

 

下面是三种查询方式的代码:

 

 


EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00