Hibernate не удается создать sessionfactory с использованием пула HikariCP

Я пытаюсь использовать соединение с пулом 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 Исключение в методе запуска приложения


person Marcos    schedule 06.11.2014    source источник
comment
Какую версию HikariCP вы используете и какую версию Java? Если вы включите ведение журнала отладки, регистрируется ли дополнительная информация?   -  person brettw    schedule 07.11.2014
comment
Я включаю уровень отладки (извините, я отключил его раньше) и получаю эту ошибку 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]   -  person Marcos    schedule 07.11.2014
comment
Я использую HikariCP 2.1.0 и Java 1.8.0_40-ea (b11). Приложение представляет собой проект JavaFX. Также я использую MySQL Connector 5.1.33.   -  person Marcos    schedule 07.11.2014
comment
Вы говорите, что используете HikariCP, но hibernate.connection.provider.class указывает на MySQLDataSource, а не на провайдера спящего режима HikariCP. Вам необходимо ознакомиться с документацией провайдера спящего режима.   -  person brettw    schedule 08.11.2014


Ответы (1)


Как говорится, мне нужно только изменить класс провайдера на

<prop key="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</prop>
person Marcos    schedule 08.11.2014