歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Hibernate懶加載異常處理

Hibernate懶加載異常處理

日期:2017/3/1 10:49:06   编辑:Linux編程

一 懶加載概念

懶加載,運行後沒有立刻訪問相應的數據庫,返回的是代理對象,永遠不可能為空,當第一次使用該對象的時候,才去訪問

二 異常的出現

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