和SQL查询一样,HQL也支持各种各样的连接查询,如内连接、外连接。我们知道在SQL中可通过join子句实现多表之间的连接查询。HQL同样提供了连接查询机制,还允许显式指定迫切内连接和迫切左外连接。HQL提供的连接方式:
迫切连接是指在指定连接方式时不仅指定了连接查询方式,而且显式地指定了关联级别的查询策略。Hibernate使用fetch关键字实现,fetch关键字表明“左边”对象用于与“右边”对象关联的属性会立即被初始化。 平时项目中都建议使用fetch!
看例子:
案例一,多对一关联,无迫切连接和迫切连接比较
使用结论:
①使用from....没加fetch和加了,得到的结果类型是不一样的
②使用select指定查询对象时, 加了fetch, 获取employee对象的关联对象department时, 只发起一条sql, 反之发起多条sql, 根据发起的sql条数越来效率越高的原则,项目开发中, 我们推荐都加fetch。