原來我聲明瞭SessionFactory,之後我在靜態代碼塊中又定義了一個SessionFactory,看錯誤代碼
public class HibernateUtils {
static Configuration cfg = null;
static SessionFactory sessionFactory = null;
static {
Configuration cfg = new Configuration();
cfg.configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();//這裏多定義了一個SessionFactory
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
/*
提供返回與本地線程綁定的session方法
* */
public static Session getSessionObject(){
return sessionFactory.getCurrentSession();
}
}
導致session = HibernateUtils.getSessionObject();
一直獲取不到session對象,獲取NULL
正確代碼:
*/
public class HibernateUtils {
static Configuration cfg = null;
static SessionFactory sessionFactory = null;
static {
Configuration cfg = new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
/*
提供返回與本地線程綁定的session方法
* */
public static Session getSessionObject(){
return sessionFactory.getCurrentSession();
}
}
ps:注意一下,如果不是犯我的低級錯誤,就是在hibernate核心配置文件中沒有配置session與本地線程綁定,在hibernate.cfg.xml中加入如下配置
<property name="hibernate.current_session_context_class">thread</property>