【问题标题】:Hibernate fails create sessionfactory using HikariCP poolHibernate 使用 HikariCP 池创建 sessionfactory 失败
【发布时间】:2015-01-03 13:45:50
【问题描述】:

我尝试使用 HikariCP 池连接,但我无法启动应用程序,因为我得到了所有时间,一个来自创建会话的空对象。

这是我的配置:

系统

  • 休眠 4.3.6.Final
  • MariaDB v10.0 (x64)

HibernateUtil 类

public class HibernateUtil {
private static SessionFactory sessionFactory;

private static SessionFactory buildSessionFactory() {
    try {
        Configuration configuration = new Configuration();
        configuration.configure("hibernate.cfg.xml");
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);

        return sessionFactory;
    }
    catch (HibernateException ex) {
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionFactory() {
    if (sessionFactory == null) {
        sessionFactory = buildSessionFactory();
    }
    return sessionFactory;
}
}

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>
        <!-- Datos de conexión a la BD -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3307/******?zeroDateTimeBehavior=convertToNull</property>
        <property name="hibernate.connection.username">****</property>
        <property name="hibernate.connection.password">****</property>
        <property name="javax.persistence.validation.mode">none</property>
        <!-- Configuración de sesión -->
        <property name="connection.release_mode">after_transaction</property>
        <property name="current_session_context_class">thread</property>
        <!-- Configuración de la salida SQL y estadísticas -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
        <!-- Pool de conexiones -->
        <property name="hibernate.connection.provider_class">org.mariadb.jdbc.MySQLDataSource</property>
        <!-- Enable Hibernate's current session context -->
        <property name="hibernate.cache.use_second_level_cache">false</property>
        <property name="hibernate.cache.use_query_cache">false</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
    </session-factory>
</hibernate-configuration>

日志

准备使用过滤器构建会话工厂: {} HHH000130:实例化显式连接提供程序:org.mariadb.jdbc.MySQLDataSource 应用程序启动方法异常

【问题讨论】:

  • 您使用的是什么版本的 HikariCP 以及什么 Java 版本?如果启用调试日志记录,是否会记录其他信息?
  • 我启用了调试级别(抱歉我之前禁用了),我收到此错误nov 07, 2014 12:09:11 PM com.util.HibernateUtil buildSessionFactory GRAVE: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
  • 我使用 HikariCP 2.1.0 和 Java 1.8.0_40-ea (b11)。应用程序是一个 JavaFX 项目。另外,我使用 MySQL 连接器 5.1.33
  • 您说您正在使用 HikariCP,但 hibernate.connection.provider.class 指向 MySQLDataSource 而不是 HikariCP hibernate 连接提供程序。您需要查阅休眠连接提供程序文档。

标签: hibernate sessionfactory hikaricp


【解决方案1】:

正如 brettw 所说,我只需要将提供程序类更改为

<prop key="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</prop>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    相关资源
    最近更新 更多