2014-11-06 74 views
1

我嘗試使用HikariCP池連接,但無法啓動應用程序,因爲我全部都是空的,創建了一個空對象。Hibernate失敗使用HikariCP池創建sessionfactory

這是我的配置:

系統

  • 休眠4.3.6.Final
  • MariaDB的V10.0(64)

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> 

LOG

準備建立與過濾器會話工廠: {} HHH000130:實例明確連接提供商:org.mariadb.jdbc .MySQLDataSource 應用程序啓動方法中的例外

+0

您正在使用什麼版本HikariCP的,哪些Java版本?如果啓用調試日誌記錄,是否記錄了其他信息? – brettw 2014-11-07 04:30:05

+0

我啓用調試級別(對不起,我禁用之前),我得到這個錯誤'nov 07,2014 12:09:11 PM com.util.HibernateUtil buildSessionFactory GRAVE:org.hibernate.service.spi.ServiceException:無法創建請求服務[org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]' – Marcos 2014-11-07 11:11:03

+0

我使用HikariCP 2.1.0和Java 1.8.0_40-ea(b11)。 App是一個JavaFX項目。另外,我使用MySQL連接器5.1.33 – Marcos 2014-11-07 11:25:04

回答

1

由於brettw說,我只需要供應商類更改爲

<prop key="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</prop> 
相關問題