HQL的多表查询:
二、hibernate查询方式:SQL查询:
三、hibernate抓取策略(优化):
1、类级别的延迟加载:
如果lazy=“true”,那么延迟加载就会失效,就采用get方法,而不是load方法。
注:class上的lazy只对普通属性有效,对关联级别无效。
抓取策略往往会和关联级别的延迟加载一起使用,优化语句
四、< set >上的配置
1.默认值:先查客户,再查联系人
2.设置lazy=“false”,那么两条消息就一起发送,就不会延迟
3.非常懒,要什么就给什么,要查询联系人的个数,就返回一个数字10,直接调用count,不直接查询所有了。
4.fetch=join时,那么lazy失效,只发送一条语句,直接获取左外连接
5.fetch=“subselect” 时。
in里面的语句是子查询
6.lazy=false时。
在实际开发中,一般都采用默认值。如有特殊的需求(如果要查询一个班级,班级的学生都需要显示的时候)那么就可能需要配置join
五、< many-to-one >上面的配置:
1.默认值:
2.lazy=false情况
3.fetch=join,lazy失效情况
4.proxy取值取决于另一端< class >上的值
在实际开发中,一般都采用默认值。如有特殊的需求(如果要查询一个班级,班级的学生都需要显示的时候)那么就可能需要配置join
面试当中会问道:说怎么进行程序的优化啊? 可以聊聊一级缓存,或者对语句进行优化,在set上配置fetch啊,在many-to-one 进行配置fetch啊,进行优化。如果说我查联系人直接把客户都给查了,那么配置join就行了,只发一条语句就能解决问题
六、批量抓取
1.批量抓取配置:一共就4个客户
获取客户,批量抓取联系人
2.获取联系人,批量抓取客户