如何在上下文中存储sessionFactory对象并使用相同的对象整个应用程序

时间:2015-11-11 16:02:32

标签: java hibernate servlets

我正在开发基于hibernate的应用程序,但现在在我的应用程序中,我正在为每个用户创建sessionFactory对象,即当用户以不正确的方式登录时。 我搜索相同的问题,但我找不到任何解决方案。我在jndi上阅读了很多,但仍然没有积极的结果。 我有相同的解决方案,但他们使用struts或spring但我只需要hibernate应用程序 是否有人拥有代码或为所有用户共享一个sessionFactory对象。

我正在使用 -

  1. Tomcat服务器
  2. Hibernate 4.0
  3. NetBean

1 个答案:

答案 0 :(得分: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();