hibernate学习(八)

文章讨论了Hibernate中的HQL查询和SQL查询方式,重点在于Hibernate的抓取策略和延迟加载机制。类级别的延迟加载只对普通属性生效,而关联级别需配合抓取策略优化。在<set>和<many-to-one>上的配置可以影响查询效率,如fetch=join可避免多次查询。批量抓取是另一种优化手段,可以提高数据获取效率。
摘要由CSDN通过智能技术生成

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.获取联系人,批量抓取客户
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值