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

Hibernate 6中如何移除「不适合生产环境」的连接池警告?

解决Hibernate内置连接池警告并适配生产环境

问题原因

你看到的HHH10001002警告,本质是因为Hibernate默认启用的内置连接池仅用于开发测试场景,不具备生产环境所需的稳定性、性能和监控能力。即使你设置了hibernate.connection.pool_size,也只是调整了内置池的连接数量,并没有替换掉这个不适合生产的池实现,所以警告会持续出现。

修复方案:使用生产级连接池(以HikariCP为例)

HikariCP是目前性能最优、Hibernate官方推荐的生产级连接池,以下是具体配置步骤:

1. 添加HikariCP依赖

如果使用Maven,在pom.xml中加入:

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version> <!-- 使用最新稳定版 -->
</dependency>

2. 修改persistence.xml配置

移除原有的hibernate.connection.pool_size,并添加HikariCP的专属配置,同时调整生产环境的关键参数:

<persistence xmlns="https://jakarta.ee/xml/ns/persistence" version="3.1">
    <persistence-unit name="com.peuconomia.hibernate.aws_mysql_latest">
        <properties>
            <!-- 基础JDBC配置 -->
            <property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hibernate_tutorial?useSSL=true&serverTimezone=UTC"/>
            <property name="jakarta.persistence.jdbc.user" value="root"/>
            <property name="jakarta.persistence.jdbc.password" value="123qweasdzxc"/>
            
            <!-- Hibernate核心配置 -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/> <!-- 适配MySQL 8+,替换旧版Dialect -->
            <property name="hibernate.hbm2ddl.auto" value="update"/> <!-- 生产环境禁用create,改用update或validate -->
            <property name="hibernate.show_sql" value="false"/> <!-- 生产环境关闭SQL打印,避免性能损耗 -->
            <property name="hibernate.format_sql" value="false"/>
            
            <!-- HikariCP连接池配置 -->
            <property name="hibernate.connection.provider_class" value="org.hibernate.hikaricp.internal.HikariCPConnectionProvider"/>
            <property name="hibernate.hikari.maximumPoolSize" value="20"/> <!-- 生产环境池大小建议根据CPU核数设置,一般为CPU核数*2+1 -->
            <property name="hibernate.hikari.minimumIdle" value="5"/> <!-- 最小空闲连接数 -->
            <property name="hibernate.hikari.connectionTimeout" value="30000"/> <!-- 获取连接超时时间(毫秒) -->
            <property name="hibernate.hikari.idleTimeout" value="600000"/> <!-- 空闲连接超时时间(毫秒) -->
            <property name="hibernate.hikari.maxLifetime" value="1800000"/> <!-- 连接最大生命周期(毫秒) -->
        </properties>
    </persistence-unit>
</persistence>

3. 生产环境额外注意事项

  • 数据库驱动:取消注释并使用MySQL 8+的驱动类com.mysql.cj.jdbc.Driver(旧版com.mysql.jdbc.Driver已废弃)
  • SSL配置:生产环境务必开启useSSL=true,并根据实际情况配置verifyServerCertificate=true
  • hbm2ddl.auto:绝对不要在生产环境使用create或create-drop,建议使用update(仅更新 schema)或validate(仅校验 schema)
  • 日志配置:生产环境使用SLF4J+Logback等成熟日志框架,避免依赖Hibernate内置日志

验证配置

重启应用后,HHH10001002警告会消失,同时HikariCP会输出自身的初始化日志,说明已成功切换到生产级连接池。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:35:24