SSH框架之Hibernate的懒加载

本文详细解释了Hibernate中get和load方法的区别,并介绍了懒加载的概念及其异常处理方式。get方法会立即查询数据库,而load方法则默认采用懒加载,在真正需要数据时才发起查询。

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

一、面试题: get、load方法区别?
1、get():
1)get:及时加载,只要调用get方法立刻向数据库查询。

2)get:Session关闭后,可以加载数据!

2、load():
1)默认使用懒加载,当用到数据的时候才向数据库查询。
a)情况1:不执行sql语句

b)情况2:执行sql语句

2)Session关闭后,不能使用懒加载数据!

二、懒加载:(lazy)
1、概念:当用到数据的时候才向数据库查询,这就是hibernate的懒加载特性。

2、目的:提供程序执行效率!

3、懒加载异常:
Session关闭后,不能使用懒加载数据!
如果session关闭后,使用懒加载数据报错:

org.hibernate.LazyInitializationException: could not initialize proxy

如何解决session关闭后不能使用懒加载数据的问题?
方式1: 先使用一下数据
dept.getDeptName();
方式2:强迫代理对象初始化
Hibernate.initialize(dept);
方式3:关闭懒加载
设置lazy=false;
(常用的解决办法)方式4: 在使用数据之后,再关闭session!

4、lazy 值
1)true 使用懒加载
2)false 关闭懒加载
3)extra (在集合数据懒加载时候提升效率)
在真正使用数据的时候才向数据库发送查询的sql;
如果调用集合的size()/isEmpty()方法,只是统计,不真正查询数据!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值