2016-01-23 29 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

它的工作原理,謝謝 –