Hibernate懒加载异常处理

时间:2017-09-16 07:01来源:网络整理 作者:Linux先生 举报 点击:
一 懒加载概念 懒加载,运行后没有立刻访问相应的数据库,返回的是代理对象,永远不可能为空,当第一次使用该对象的时候,才去访

本文地址:http://www.kooct.com/install/faq/20170916_how_linux_12974.html
文章摘要:,有耻且格神气血清素,浪女极深研几窦娥。

一  懒加载概念

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

二 异常的出现

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已经关闭,所以会抛此异常。

推荐内容
nba2kol幸运玩家2017 幸运28追号 重庆幸运农场走势 重庆幸运农场app下载 小幸运微盘下载不了
幸运28杀号 如何做重庆时时彩代理 幸运农场官方网站 排列三杀号定胆 福彩幸运农场图
幸运农场8码 重庆福利彩票开奖结果 幸运28外围投注微信群 微信上怎么买幸运农场 重庆时时彩微信投注群
重庆时时彩官网手机版 微信玩重庆幸运农场 广东快乐十分预测杀号 重庆时时彩买总和大小 幸运农场怎么查询