Hibernate_day04--HQL多表查询_Hibernate检索策略
HQL多表查询
Mysql里面多表查询
1 内连接 查的是两个表关联的数据 2 左外连接 查的是左边表所有数据,右边表关联数据 3 右外连接 |
HQL实现多表查询
Hql多表查询 (1)内连接 (2)左外连接 (3)右外连接 (4)迫切内连接 (5)迫切左外连接 |
HQL内连接
1 内连接查询hql语句写法:以客户和联系人为例 (1)from Customer c inner join c.setLinkMan
返回list,list里面每部分是数组形式 2 演示迫切内连接 (1)迫切内连接和内连接底层实现一样的 (2)区别:使用内连接返回list中每部分是数组,迫切内连接返回list每部分是对象 (3)hql语句写法 - from Customer c inner join fetch c.setLinkMan |
HQL左外连接
1 左外连接hql语句: (1)from Customer c left outer join c.setLinkMan (2)迫切左外连接from Customer c left outer join fetch c.setLinkMan 2 左外连接返回list中每部分是数组,迫切左外连接返回list每部分是对象
1 右外连接hql语句: (1)from Customer c right outer join c.setLinkMan |
Hibernate检索策略
检索策略的概念
1 hibernate检索策略分为两类: (1)立即查询:根据id查询,调用get方法,一调用get方法马上发送语句查询数据库
(2)延迟查询:根据id查询,还有load方法,调用load方法不会马上发送语句查询数据,只有得到对象里面的值时候才会发送语句查询数据库 2 延迟查询分成两类: (1)类级别延迟:根据id查询返回实体类对象,调用load方法不会马上发送语句 (2)关联级别延迟: - 查询某个客户,再查询这个客户的所有联系人,查询客户的所有联系人的过程是否需要延迟,这个过程称为关联级别延迟 |
关联级别延迟操作
1 在映射文件中进行配置实现 (1)根据客户得到所有的联系人,在客户映射文件中配置 2 在set标签上使用属性 (1)fetch:值select(默认) (2)lazy:值 - true:延迟(默认) - false:不延迟 - extra:极其延迟 true默认延时: get时发一条和用的时候发一条sql语句 False不延时: 执行get就发了两条sql语句 (1)调用get之后,发送两条sql语句
(2)极其懒惰,要什么值给什么值 |
批量抓取
1 查询所有的客户,返回list集合,遍历list集合,得到每个客户,得到每个客户的所有联系人
(1)上面操作代码,发送了多条sql语句 2 在客户的映射文件中,set标签配置 (1)batch-size值,值越大发送语句越少 |
最新文章
- 笔记本中的archlinux调节亮度
- 20145218&;20145240 《信息安全系统设计基础》实验二 固件设计
- POI2012
- XMl各种格式转换功能代码
- JAVA设计模式——单例模式
- 安装xampp无法设置默认时间的坑
- Circle(codevs 3134)
- CnPlugin 1.5.400
- Spring事务管理中@Transactional
- hdoj 1201 18岁生日
- JavaScript键盘事件全面控制代码
- 数据挖掘算法学习(三)NaiveBayes算法
- nodeValue的兼容问题
- 整合最优雅SSM框架:SpringMVC + Spring + MyBatis
- [2012-04-25]shell大括号参数扩展(Parameter Expansion)
- Linxu指令--crond
- Angular 学习笔记 (路由外传 - RouteReuseStrategy)
- jQuery中的动画方法
- Spring 开发常见问题
- Linux中编写Bash脚本的10个技巧