抓取

Hibernate查询、 检索、 抓取 (Fetch)

本小妞迷上赌 提交于 2019-12-01 19:59:50
一、HQL 在hql中关键字不区分大小写,但属性和类名区分大小写 1. 简单属性查询 * 单一属性查询,返回结果集属性列表 * 多个属性查询,返回集合元素是对象数组,数组长度取决于select中属性个数 * 返回数组不够对象化,可以采用hql动态实例化对象 e.g: select new Student(name, age) from Student; 2. 实体对象查询 * N + 1问题,在默认情况下,使用query.iterate查询, 可能 出现N + 1问题 发出N+1条sql语句 1: 首先发出一条查询id列表的SQL N: 根据id列表到缓存中查询,如果缓存未命中,则根据ID发出N条相应sql * list和iterated 区别 > list : 每次都会发出SQL语句,list会向缓存中放入数据,而不利用缓存的数据 > iterate : 在默认情况下iterate利用缓存数据,但在缓存中根据ID未命中则可能出现N+1问题 3. 条件查询 * 可以采用拼接字符串的方式传递参数 * 可以采用 ?来传递参数(索引从0开始) * 可以采用 :参数名 来传递 4. 本地SQL查询 5. 外置命名查询 6. 分页查询 7. 对象导航查询 9. 连接查询 (内连,外连) * 内连接 select c.name, s.name from Student s join s