添加相关Jar包仍遇org.hibernate.ConfigurationException异常求助
Hibernate保存MySQL数据时触发ConfigurationException异常排查
问题概述
尝试用Hibernate实现向MySQL数据库保存数据的基础示例,已添加相关Jar包,但运行CreateStudentDemo.java时抛出org.hibernate.internal.util.config.ConfigurationException异常。
核心代码与配置
CreateStudentDemo.java
package com.aris.hibernate.demo; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.aris.hibernate.demo.entity.Student; public class CreateStudentDemo { public static void main(String[] args) { // 创建Session工厂 SessionFactory factory = new Configuration() .configure() .addAnnotatedClass(Student.class) .buildSessionFactory(); // 创建Session Session session = factory.getCurrentSession(); try { // 用Session保存Java对象 // 创建Student对象 System.out.println("Creating a new student..."); Student student = new Student("Paul","Wood","paulwood44@gmail.com"); // 开启事务 session.beginTransaction(); // 保存Student System.out.println("Saving the student..."); session.save(student); // 提交事务 session.getTransaction().commit(); }catch(Exception e) {} finally { factory.close(); } } }
hibernate.cfg.xml配置
<!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> <!-- JDBC数据库连接配置 --> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hb_student_tracker?useSSL=false&serverTimezone=UTC</property> <property name="connection.username">hbstudent</property> <property name="connection.password">hbstudent</property> <!-- JDBC连接池配置 --> <property name="connection.pool_size">1</property> <!-- SQL方言配置 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 打印SQL语句到控制台 --> <property name="show_sql">true</property> <!-- 当前Session上下文配置 --> <property name="current_session_context_class">thread</property> </session-factory> </hibernate-configuration>
项目环境信息
- 目录结构:src源码目录下分为
com.aris.hibernate.demo(存放主类)和com.aris.hibernate.demo.entity(存放Student实体类),resources目录存放hibernate.cfg.xml,lib目录存放所有依赖Jar包。 - 依赖Jar包:包含Hibernate核心相关包、MySQL JDBC驱动包等基础依赖。
排查与解决建议
修复异常捕获逻辑
代码中catch(Exception e) {}直接吞噬了异常,无法获取具体错误信息。修改为以下代码,打印完整异常堆栈:catch(Exception e) { e.printStackTrace(); }这是定位问题的关键,能明确是配置文件找不到、语法错误还是数据库连接参数问题。
检查配置文件路径
确保hibernate.cfg.xml放在项目的resources根目录下,Hibernate默认从类路径根目录加载该配置文件,路径错误会直接触发ConfigurationException。修正SQL方言配置
如果使用的是MySQL 8.0及以上版本,当前配置的org.hibernate.dialect.MySQLDialect已过时,需替换为:<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>方言不匹配会导致Hibernate无法正确生成适配的SQL语句,进而触发配置异常。
验证Jar包完整性与版本兼容性
- 确认所有Hibernate核心依赖包都已添加,避免缺失
hibernate-core、jboss-logging等关键包。 - 确保MySQL JDBC驱动版本与MySQL服务器版本兼容,比如MySQL 8.0对应
mysql-connector-java:8.x版本。
- 确认所有Hibernate核心依赖包都已添加,避免缺失
检查XML配置语法
用XML校验工具检查hibernate.cfg.xml的语法是否正确,比如标签是否闭合、属性值是否合法,XML语法错误会导致Hibernate无法解析配置文件。
内容的提问来源于stack exchange,提问作者CodexManiac
相关产品推荐
相关产品推荐

