You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

学习Hibernate启动程序报错:驱动管理器未初始化导致无法获取连接

Hibernate启动报错:Cannot get a connection as the driver manager is not properly initialized

启动程序时抛出以下异常:

java.lang.IllegalStateException: Cannot get a connection as the driver manager is not properly initialized

报错栈信息:

at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:172)
at net.codejava.hibernate.VueloManager.setup(VueloManager.java:15)
at net.codejava.hibernate.VueloManager.main(VueloManager.java:54)

我的hibernate.cfg.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property
                name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property
                name="connection.url">jdbc:mysql://127.0.0.1:3306/vuelos_lite</property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <property name="show_sql">true</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <mapping class="net.codejava.hibernate.Vuelo" />
        <mapping class="net.codejava.hibernate.Pasajero" />
        <mapping class="net.codejava.hibernate.Pasaje" />

    </session-factory>
</hibernate-configuration>

主类VueloManager代码:

public class VueloManager {
    protected SessionFactory sessionFactory;

    protected void setup() {
        final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
        try {
            sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
        } catch (Exception ex) {
            StandardServiceRegistryBuilder.destroy(registry);
        }
    }
    protected void read() {
        Session session = sessionFactory.openSession();

        String identificadorId = "BRU-2222";
        Vuelo vuelo = session.get(Vuelo.class, identificadorId);

        System.out.println("Id: " + vuelo.getIdentificador());
        System.out.println("Fecha: " + vuelo.getDate());
        System.out.println("Tipo Vuelo: " + vuelo.getTipo_vuelo());

        exit();

    }
    public static void main(String[] args) {
        VueloManager manager = new VueloManager();

        manager.setup();
        //manager.read();
        manager.exit();
    }
}

我已检查连接配置确认无误,但仍出现该错误,求解决方法。


解决方向

1. 修正MySQL驱动与URL配置

如果使用MySQL 8.0+版本,com.mysql.jdbc.Driver已被弃用,需替换为com.mysql.cj.jdbc.Driver,同时URL需添加时区参数:

<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/vuelos_lite?serverTimezone=UTC</property>

2. 确认驱动依赖已正确引入

  • Maven项目需在pom.xml中添加依赖:
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version> <!-- 匹配你的MySQL版本 -->
    </dependency>
    
  • 手动管理jar包的项目,确保驱动jar已放入lib目录并被IDE识别。

3. 验证数据库连接可用性

用数据库客户端(如MySQL Workbench)测试连接参数:127.0.0.1:3306、用户名root、空密码,确认能正常连接到vuelos_lite库;同时检查MySQL服务是否启动、端口3306是否被占用。

4. 完善异常排查信息

当前setup()方法捕获异常后未打印详情,无法定位具体错误,修改代码添加日志:

protected void setup() {
    final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
    try {
        sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
    } catch (Exception ex) {
        ex.printStackTrace(); // 打印完整异常栈
        StandardServiceRegistryBuilder.destroy(registry);
    }
}

运行后查看控制台输出,能精准定位问题根源。

5. 检查配置文件路径与Hibernate版本兼容性

确保hibernate.cfg.xml放在类路径根目录(Maven项目为src/main/resources);若使用Hibernate 5.x+,可尝试移除DOCTYPE声明,改用自动配置逻辑。

内容的提问来源于stack exchange,提问作者Angel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:24:20