2016-01-23 62 views
1

我有HibernateUtil类和实体,servlet和jsp包。我应该添加到我的代码或休眠的配置文件来启动创建所有H2表(根据我的实体)部署在Tomcat我的战争文件之后,第一次调用之前(对我来说,这是登录)如何在部署时使用Tomcat 8或9自动启动Hibernate

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(); 
} 

}

+0

我相信hbm2ddl-auto属性是你在找什么:http://stackoverflow.com/questions/438146/hibernate-hbm2ddl-auto-possible-values-and-what-they-do – Soggiorno

回答

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(); 
    } 
} 

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

+0

它的工作原理,谢谢 –