hibernate.cfg.xml 未解析

标签 hibernate maven tomcat

我正在使用 hibernate 4 和 Maven:

enter image description here

所以问题是当我启动服务器时,我看不到它正在解析 hibernate.cfg.xml 并且表不是在数据库中创建的;

hibernate .cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
    <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost/mvnodb</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">admin</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <mapping class="tn.onp.mvno.model.Person" ></mapping>
    <mapping class="tn.onp.mvno.model.User" ></mapping>
    <mapping class="tn.onp.mvno.model.Call" ></mapping>
    <mapping class="tn.onp.mvno.model.User" ></mapping>
 </session-factory>

最佳答案

根据我们的设置,Hibernate 通常是通过构建 SessionFactory 启动的。除非您使用某种 Spring/JPA 集成,否则这不会在您启动 tomcat 时自动发生。

您可以使用以下监听器在部署和取消部署时初始化和关闭 Hibernate。

public class HibernateListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {
        HibernateUtil.getSessionFactory(); // Just call the static initializer of that class    
    }

    public void contextDestroyed(ServletContextEvent event) {
        HibernateUtil.getSessionFactory().close(); // Free all resources
    }
}

你需要在你的类路径中有这个类,以及 hibernate jar (+它的依赖项_和你的数据库驱动程序。

您还需要在 web.xml 中配置监听器

<listener>
    <listener-class>org.mypackage.HibernateListener</listener-class>
</listener>

如果您的 hibernate.cfg.xml 文件有问题,您应该会在启动时看到它们。

关于hibernate.cfg.xml 未解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14774986/

相关文章:

java - 如何为具有复合主键和外键的 oneToMany 关系创建 Hibernate 映射文件?

spring - 奇怪的异常 : "Name must not be null or empty!"

java - Tomcat-Spring-Hibernate Web 应用程序中的 'PermGen out of space' 异常可以做什么?

Java 1.8、tomcat 8.5、Jersey 2 - 无法正常工作

eclipse - Maven 构建成功,Eclipse 检测到依赖项中有循环

maven - 如何从 Maven Reactor 构建中排除模块及其子模块?

tomcat - Nginx 反向代理单个 tomcat 实例上的多个应用程序

java - 使用 Java + Maven + Jersey2 + Tomcat 8.5 和 IntelliJ IDEA 的 HTTP 404

hibernate - 了解 Hibernate 事务

java - 如何更改tomcat或jetty下的Java webapp 'WEB-INF path'约定