2015-11-11 22 views
2

我基於Hibernate開發應用,但現在在我的應用我創建每個用戶即SessionFactory對象,同時用戶在不正確的方式記錄下來。 我搜索很多相同的問題,但我無法找到任何解決方案。我讀了很多關於jndi的書,但仍然沒有得到積極的結果。 我得到了它相同的解決方案,但他們使用的支柱或彈簧,但我只需要冬眠應用 是具有代碼或共享一個SessionFactory對象爲所有用戶任何人。如何存儲在上下文中SessionFactory對象,並使用同一個對象的整個應用程序

我使用 -

  1. Tomcat服務器
  2. 的Hibernate 4.0
  3. NetBean

回答

0

一個簡單的方法可以創建這樣的監聽器:

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(); 
+0

感謝阿爾貝託... –

+0

感謝阿爾貝託答覆...但我關心的只是,我要加我的sessionFactory在一個常見的地方,我可以爲所有用戶提供相同的對象,而不會爲每個用戶創建新的sessionFactory,而這正是我目前正在做的,而且這種做法是錯誤的。 –

+0

你使用Spring還是CDI/EJB?因爲一種方法可以聲明一個應用程序上下文對象,您可以在其中獲得sessionFactory –

相關問題