自己學習Hibernate時的一個低級錯誤:sessionFactory.getCurrentSession()空指針異常

原來我聲明瞭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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章