一個簡單的方法可以創建這樣的監聽器:
public class HibernateContext implements ServletContextListener {
private static SessionFactory sessionFactory;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
sessionFactory = new Configuration().configure().buildSessionFactory();
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
sessionFactory.close();
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
在你的web.xml中聲明它:
<listener>
<listener-class>yourpackage.HibernateContext</listener-class>
</listener>
,然後從你的代碼的任何地方調用工廠:
HibernateContext.getSessionFactory();
感謝阿爾貝託... –
感謝阿爾貝託答覆...但我關心的只是,我要加我的sessionFactory在一個常見的地方,我可以爲所有用戶提供相同的對象,而不會爲每個用戶創建新的sessionFactory,而這正是我目前正在做的,而且這種做法是錯誤的。 –
你使用Spring還是CDI/EJB?因爲一種方法可以聲明一個應用程序上下文對象,您可以在其中獲得sessionFactory –