at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:341)
at com.sun.proxy.$Proxy0.get(Unknown Source)
at dao.UserDao.getUser(UserDao.java:10)
at biz.UserBiz.getUser(UserBiz.java:18)
at test.Test.main(Test.java:9)
在使用getCurrentSession();方法创建会话获得会话时,出现Exception in thread "main" org.hibernate.HibernateException: 异常
那是因为使用此会话进行的jdbc操作,必须是要在开启事物的环境下进行
public User getUser(int id) {
Transaction tx = null;
User user = null;
try {
tx = HibernateSessionFactory.getSession().beginTransaction();
user = dao.getUser(id);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx != null) {
tx.rollback();
}
}
return user;
}
业务层必须要获得transaction事物对象,进行commit 和 rollback
如果直接去调用(User) HibernateSessionFactory.getSession().get(User.class, id);
就会出现此异常