Hibernate懒加载异常处理

本文详细阐述了Hibernate懒加载的概念及其在实际应用中遇到的异常情况,包括异常的出现和解决办法。主要通过示例代码说明了在访问未初始化的对象时如何避免LazyInitializationException异常。

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

Hibernate懒加载异常处理

一 懒加载概念

懒加载,运行后没有立刻访问相应的数据库,返回的是代理对象,永远不可能为空,当第一次使用该对象的时候,才去访问

二 异常的出现

1.用查询的方法来测试

public static User getUser(int id){

Session session = null;

try {

session = HibernateUtil.getSession();

Class clazz = User.class;//通过映射文件查找class对象

User user = (User) session.load(clazz, id);return user;

} finally {

// 使资源得到释放

if (session != null) {

session.close();

}

}

}

2.在主方法中

public static void main(String[] args) {

//增

User user = new User();

user.setName("老王");

user.setBirthday(new Date());

addUser1(user);

System.out.println(user.getId());

//查

User user2 = getUser(user.getId());

System.out.println(user2.getId()+":"+user2.getName());

}

3.异常

Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session

at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)

at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)

at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)

at com.hbsi.domain.User_$$_javassist_0.getName(User_$$_javassist_0.java)

at com.hbsi.test.TestHibernate.main(TestHibernate.java:30)

4.解决的办法

出现异常的原因当在执行的时候,因为懒加载的原因,它并没有立刻访问数据库,当在main方法中访问的时候,已经插入完成,session已经关闭,所以会抛此异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值