设为首页 加入收藏

TOP

Hibernate懒加载异常处理
2014-11-24 13:55:54 来源: 作者: 【 】 浏览:2
Tags: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已经关闭,所以会抛此异常。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Hibernate框架的增删改查代码详解 下一篇Hibernate概念深入和CURD(增删改..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: