歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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已經關閉,所以會拋此異常。

Copyright © Linux教程網 All Rights Reserved