gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:18:16 24 4
gpt4 key购买 nike

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

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

最佳答案

虽然最好使用 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 应用程序取消部署/关闭时销毁。

关于java - 如何使用 Tomcat 8 或 9 在部署时自动启动 Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com