如何使用Tomcat 8或9在部署时自动启动Hibernate

时间:2016-01-23 15:36:00

标签: java hibernate tomcat orm configuration

我有HibernateUtil类和实体包,servlet和jsp。我应该在我的代码或hibernate配置文件中添加什么来开始创建所有H2表(根据我的实体)在Tomcat上部署我的war文件之后,在第一次调用之前(在我的情况下这是登录)

public class HiberUtil {
private static final SessionFactory sFactory = configureSessionFactory();

private static SessionFactory configureSessionFactory() {
    Configuration cf = new Configuration();
    cf.configure("hibernate.cfg.xml");
    SessionFactory sf = cf.buildSessionFactory(new StandardServiceRegistryBuilder().applySettings(cf.getProperties()).build());
    return sf;
}

public static SessionFactory getSessionFactory() {
    return sFactory;
}

public static void closeSessionFactory(){
    sFactory.close();
}

}

1 个答案:

答案 0 :(得分:1)

虽然使用像Java EE或Spring这样自动管理资源的容器会更好,但你仍然可以手动完成。

您需要在web.xml中添加一个监听器:

<listener>
    <listener-class>my.package.HibernateApplicationContextListener</listener-class>
</listener>

然后按如下方式实现监听器:

public class HibernateApplicationContextListener 
    implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        HiberUtil.getSessionFactory();
    }

    public void contextDestroyed(ServletContextEvent event) {
        HiberUtil.closeSessionFactory();
    }
}

这样,当Web应用程序启动时会创建SessionFactory,并在取消部署/关闭Web应用程序时将其销毁。