当hibernate第一次调用时,HttpServlet类无法找到mysql-jar,而相同的类在不同的执行顺序中工作



我知道论坛上也有类似的问题,但这是一个奇怪而不同的场景

我首先加载一个带有servlet调用的Java web应用程序(比如InitServlet(。

在InitServlet中,当我进行外部函数调用时,它会使用hibernate进行数据库调用,但会失败

```org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]Caused by: org.hibernate.exception.JDBCConnectionException: Error calling DriverManager#getConnection```

它在buildSessionFactory中失败

但在同一个servlet中,我添加了一块代码,它使jdbc调用成为第一个逻辑,然后调用上面提到的hibernate函数可以很好地工作

现在,在hibernate调用之前添加Class.forName("com.mysql.jdbc.Driver");也可以正常工作。这是唯一可行的方法吗。

为什么应用程序不能加载相关的jar,因为它在tomcat/lib文件夹下可用。以下是供您参考的hibernate.cfg片段

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver.class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC</property>

首先将数据库xml文件放在项目源文件夹中,然后将所有jar放在项目库中。**下面是(hibernate.cfg(片段供您参考**

<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/studentdetails
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>

最新更新