我有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();
}
}
答案 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应用程序时将其销毁。