Hibernate 查询策略
来源:互联网 发布:免费手机看书软件 编辑:程序博客网 时间:2024/06/05 05:02
第 I 条 HQL 查询策略
节 1.01 基本查询
以下是 HQL/QBC/Native SQL 三种查询策略
HQL 策略:
session.createQuery( "FROM Category c where c.name like 'Laptop%'" );
QBC 策略:
session.createCriteria(Category . class ).add(Restrictions.like ( "name" , "Laptop%" ));
Native SQL 策略
session.createSQLQuery( "select {c.*} from CATEGORY {c} where NAME like 'Laptop%'" ).addEntity( "c" ,Category . class );
节 1.02 子查询
String hql = "SELECT user.username,user.password FROM UserInfo user WHERE user.username = (SELECT info.username FROM UserInfo info)" ;
节 1.03 分页查询
Query query = session.createQuery( "FROM Category c where c.name like 'Laptop%'" );
query.setMaxResults(10);
节 1.04 参数绑定
Query query = session.createQuery( "FROM Category c where c.name like :name" );
query.setParameter( "name" , "top" );
Query query = session.createQuery( "FROM Category c where c.name like ?" );
query.setParameter( 0 , "top" );
节 1.05 批量抓取 / 查询超时
query.setTimeout(60); // 查询超时
query.setFetchSize(50); // 批量抓取
节 1.06 查询结果
(a) List/Iterator
List list = query.list();
生成 sql:select category_id,name,parent_id from category where name like ?
Iterator categories = query.iterate();
生成 sql:select category_id,from category where name like ?
使用 iterate() 查询时将对象加载到高速缓存中,所以效率较 list() 要高 , 但提升性能不大。
(b) ScrollableResult 游标
在 Hibernate 查询时可能存在结果集太大无法载入内存的问题,可以阐释使用可滚动结果集 scrollable result 这种方法获取所需要的数据。
ScrollableResults cusor = session.createQuery( "FROM Category c" ).scroll();
while (cusor.next()){cusor.get();}
第 II 条 QBC/QBE 查询策略
节 2.01 基本查询
以下是 HQL/QBC/Native SQL 三种查询策略
HQL 策略:
session.createQuery( "FROM Category c where c.name like 'Laptop%'" );
QBC 策略:
session.createCriteria(Category . class ).add(Restrictions.like ( "name" , "Laptop%" ));
Native SQL 策略
session.createSQLQuery( "select {c.*} from CATEGORY {c} where NAME like 'Laptop%'" ).addEntity( "c" ,Category . class );
节 2.02 分页查询
Criteria criteria = session.createCriteria(Category . class ).add(Restrictions.like ( "name" , "Laptop%" ));
criteria.addOrder(Order.asc ( "name" ));
criteria.setFirstResult(0); // 初始行数
criteria.setMaxResults(20); // 每页显示行数
节 2.03 参数绑定
Criteria criteria = session.createCriteria(Category . class ).add(Restrictions.like ( "name" , "top%" ));
节 2.04 批量抓取 / 查询超时
criteria.setTimeout(60);
criteria.setFetchSize(50);
节 2.05 查询结果
(a) List/Iterator
List list = criteria .list();
生成 sql:select category_id,name,parent_id from category where name like ?
Iterator categories = criteria .iterate();
生成 sql:select category_id,from category where name like ?
使用 iterate() 查询时将对象加载到高速缓存中,所以效率较 list() 要高 , 但提升性能不大。
(b) ScrollableResult 游标
在 Hibernate 查询时可能存在结果集太大无法载入内存的问题,可以阐释使用可滚动结果集 scrollable result 这种方法获取所需要的数据。
ScrollableResults cusor = criteria.scroll();
while (cusor.next()){cusor.get();}
第 III 条 原生 SQL 查询策略
节 3.01 基本查询
以下是 HQL/QBC/Native SQL 三种查询策略
HQL 策略:
session.createQuery( "FROM Category c where c.name like 'Laptop%'" );
QBC 策略:
session.createCriteria(Category . class ).add(Restrictions.like ( "name" , "Laptop%" ));
Native SQL 策略
session.createSQLQuery( "select {c.*} from CATEGORY {c} where NAME like 'Laptop%'" ).addEntity( "c" ,Category . class );
节 3.02 分页查询
Query sqlQuery = session.createSQLQuery( "select {c.*} from CATEGORY {c} where NAME like 'Laptop%'" ).addEntity( "c" ,Category . class );
sqlQuery.setFirstResult(0); // 初始行数
sqlQuery.setMaxResults(20); // 每页显示行数
节 3.03 参数绑定
Query sqlQuery = session.createSQLQuery( "select {c.*} from CATEGORY {c} where NAME like :name" ).addEntity( "c" ,Category . class );
sqlQuery.setParameter( "name" , "top" );
Query sqlQuery = session.createSQLQuery( "select {c.*} from CATEGORY {c} where NAME like ?" ).addEntity( "c" ,Category . class );
query.setParameter( 0 , "top" );
节 3.04 批量抓取 / 查询超时
sqlQuery.setTimeout(60); // 查询超时
sqlQuery.setFetchSize(50); // 批量抓取
节 3.05 查询结果
(a) List/Iterator
List list = sqlQuery .list();
生成 sql:select category_id,name,parent_id from category where name like ?
Iterator categories = sqlQuery .iterate();
生成 sql:select category_id,from category where name like ?
使用 iterate() 查询时将对象加载到高速缓存中,所以效率较 list() 要高 , 但提升性能不大。
(b) ScrollableResult 游标
在 Hibernate 查询时可能存在结果集太大无法载入内存的问题,可以阐释使用可滚动结果集 scrollable result 这种方法获取所需要的数据。
ScrollableResults cusor = session.createQuery( "FROM Category c" ).scroll();
while (cusor.next()){cusor.get();}
- Hibernate 查询策略
- Hibernate优化查询策略
- Hibernate优化查询策略
- Hibernate优化查询策略
- Hibernate优化查询策略
- Hibernate检索策略,Hibernate查询方式
- Hibernate各种查询方式及查询策略
- Hibernate的查询方式与策略
- Hibernate学习42 -- 抓取策略2 -- 查询抓取
- Hibernate学习43 -- 抓取策略3 -- 子查询抓取
- Hibernate笔记三之检索策略、查询总结、连接池
- Hibernate框架的第四天(查询方式和策略)
- hibernate框架的查询策略(二十四)
- Hibernate第三讲:Hibernate主键策略和Hibernate的查询方案
- 查询策略
- Hibernate高级查询方法(内含hibernate迫切左外连接检索策略)
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合)
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合--实例)
- 速查表
- hibernate SQLQuery实践指南
- 关于String类型转换成Date,再转换成String类型
- 自古逢秋悲寂寥,我言:“一点也没错。”
- 合并两个有序链表的算法
- Hibernate 查询策略
- PNG格式说明
- 怎么自己就没有一直研究别人博客的习惯?
- AIX操作系统vi命令的使用方式
- 从宇宙长城谭宇宙的历史
- grails中Quartz CronTrigger最完整配置说明(ZT)
- MPlayer有头部信息的实时流解析方式
- Android架构
- Matlab的应用程序接口