org.hibernate.service.UnknownServiceException异常
查了很久的原因,发现是调用的两个方法,都要开启 sessionFactory!
解决办法是将前面一个调用的方法中的 sessionFactory 最后置为空,sessionFactory = null;或者将session给close()掉!在下一个方法中就能重新调用了,成功解决.
如果不关闭 SessionFactory 可能会使系统变卡,原因可能是在每个方法中都重新 new 了一个SessionFactory对象.所以,我们可以考虑将 SessionFactory 重用.
public class MyHibernateSessionFactory {
private final static Configuration configuration = new Configuration().configure();
private final static ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
private final static SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
private MyHibernateSessionFactory() {
}
public static Session getSession() {
return sessionFactory.openSession();
}
private static class SingletonHolder {
private final static MyHibernateSessionFactory INSTANCE = new MyHibernateSessionFactory();
}
public static MyHibernateSessionFactory getInstance() {
return SingletonHolder.INSTANCE;
}
}
在外部重新定义,然后在方法中调用:
public Users SearchUser() {
Session session = MyHibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
try{
//do something
}catch(Exception ex){
//do something;
}finally{
tx = null;
session.close();
}
}
这样就解决了.