Hibernate get()和load()的区别

本文探讨了在持久化操作中get()与load()方法的相同点与不同点,包括它们在对象不存在时的处理方式、发送SQL语句的时机以及缓存机制上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相同点:get()和load()方法都可以获取相应的持久化对象

不同点:

1.如果在调用get()和load()持久化对象不存在,get()返回null ,而load()抛出异常

 

2.两个方法发送查询sql语句有区别。

1)当使用get()方法根据ID进行单条查询时,会立即发送一条sql语句,并且返回的是实际查询的对象

 

2)但是使用load()方法会有所不同。当调用load()方法根据ID进行单条查询时,返回的是目标对象的代理对象,目标对象中只存储了查询对象的ID值,只有当查询了对象的除ID外的其他属性才会发送sql语句,否则不会发送sql语句。

 

3.缓存

1)当Session调用Load()方法试图从数据库中加载一个对象时,Session会先判断Session缓存中是否存在该对象,如果存在,那么就不需要从数据库中检索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值