hibernate.cfg.xml是什么 Hibernate主配置文件教程

16次阅读

hibernate.cfg.xml 是 Hibernate 的核心配置文件,用于定义数据库连接、方言、sql 日志、表结构管理及映射资源等;必须配置驱动、URL、用户名密码、dialect 和 mapping,支持 C3P0 连接池等增强功能。

hibernate.cfg.xml是什么 Hibernate主配置文件教程

hibernate.cfg.xml 是 Hibernate 框架的主配置文件,用于集中定义数据库连接参数、运行时行为、映射资源路径等核心设置。它本质上是一个 XML 格式的配置描述,Hibernate 启动时通过 Configuration().configure() 自动读取该文件(默认放在 src 或类路径根目录),构建出 sessionFactory 所需的全部环境。

核心作用:连接数据库 + 控制 ORM 行为

它不负责描述“哪个 java 类对应哪张表”(那是 .hbm.xml 或注解的事),而是管“怎么连库、用什么方言、SQL 怎么显示、表结构怎么维护”。没有它,Hibernate 无法知道该操作哪个数据库、如何生成 SQL、是否自动建表。

必须配置的 5 项基础内容

  • 数据库驱动类connection.driver_class,如 com.mysql.cj.jdbc.Driver(MySQL 8+)或 com.microsoft.sqlserver.jdbc.SQLServerDriver
  • 数据库 URLconnection.url,含地址、端口、库名、时区等,例如 jdbc:mysql://localhost:3306/testdb?serverTimezone=GMT%2B8&usessl=false
  • 用户名与密码connection.usernameconnection.password,明文填写(生产环境建议结合 JNDI 或外部配置中心)
  • 数据库方言(dialect):决定 Hibernate 如何生成符合目标数据库语法的 SQL,如 org.hibernate.dialect.MySQL8Dialect(MySQL 8)、org.hibernate.dialect.oracle12cDialect(Oracle)
  • 映射资源声明:用 告诉 Hibernate 哪些实体需要被管理

开发常用增强配置

  • SQL 日志输出show_sql 设为 true 可在控制台看到执行语句;搭配 format_sql=true 让 SQL 更易读(但注意:日志开启会轻微影响性能)
  • 表结构自动管理hbm2ddl.auto 是关键开关:
    • update:推荐开发阶段使用——表不存在则建,字段少就加,数据不丢
    • validate:上线前校验用——只比对结构,不改动,不一致直接报错
    • create-drop:单元测试专用——启动建表、退出删表
  • 连接池集成(如 C3P0):添加 hibernate.c3p0.* 属性可启用连接复用,例如:
    • c3p0.max_size=20(最大连接数)
    • c3p0.min_size=2(空闲时保底连接数)
    • c3p0.timeout=3000(空闲 3 秒后回收连接)

注意事项和细节

  • 文件名必须是 hibernate.cfg.xml,且默认路径是类路径(classpath)根目录;若放别处,需显式传入路径:new Configuration().configure("config/hibernate.cfg.xml")
  • 属性名前缀 hibernate. 可省略(如 dialecthibernate.dialect 效果一样),但加前缀更清晰、更规范
  • DTD 声明必须准确,否则解析失败;新版推荐用 https://hibernate.org/dtd/hibernate-configuration-3.0.dtd 替代旧的 sourceforge 地址
  • 密码等敏感信息不要硬编码在配置中,尤其不能提交到 git;可通过系统属性、环境变量spring Boot 的 @PropertySource 动态注入
text=ZqhQzanResources