1

私は働いています:

  • 春 4.1.4.RELEASE
  • ハイバネート 4.3.8.FINAL
  • 光CP 2.3.2
  • MySQL 5.6.22 自作

HikariCPページには、MySQL と Hibernate に関する 2 つの興味深いドキュメント/ブログがあります。

MySQL に関する次のチュートリアルを読んだ後:

DataSource に関する次の構成があります。

Alpha (最も推奨され、最初の試行)

@Bean(name="dataSource", destroyMethod="close")
public DataSource dataSourceDevelopment() throws Exception{

    HikariConfig hc = new HikariConfig();
    hc.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
    //hc.setDriverClassName("com.mysql.jdbc.Driver");
    //hc.setJdbcUrl("jdbc:mysql://localhost:3306/manolodb_01");
    hc.setUsername("user");
    hc.setPassword("password");
    hc.setPoolName("hikaricp-manolodb_01-pool");
    hc.addDataSourceProperty("databaseName", "manolodb_01");
    hc.addDataSourceProperty("cachePrepStmts", "true");
    hc.addDataSourceProperty("prepStmtCacheSize", "250");
    hc.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
    hc.addDataSourceProperty("useServerPrepStmts", "true");

    HikariDataSource hds = new HikariDataSource(hc);        
    return hds;
}

Hibernate に関する次のチュートリアルを読んだ後:

私は次の構成を持っています:

@Bean
public LocalSessionFactoryBean sessionFactory(DataSource dataSource){

    LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();

    localSessionFactoryBean.setDataSource(dataSource);
    localSessionFactoryBean.setPackagesToScan("com.manuel.jordan.domain");

    Properties hibernateProperties = new Properties();
    hibernateProperties.setProperty("hibernate.dialect", environment.getRequiredProperty("database.hibernate.dialect", String.class));
    hibernateProperties.setProperty("hibernate.connection.provider_class","com.zaxxer.hikari.hibernate.HikariConnectionProvider");
    hibernateProperties.setProperty("hibernate.cache.provider_class","org.hibernate.cache.NoCacheProvider");
    hibernateProperties.setProperty("hibernate.show_sql","true");
    hibernateProperties.setProperty("hibernate.format_sql","true");
    hibernateProperties.setProperty("hibernate.use_sql_comments","true");
    hibernateProperties.setProperty("hibernate.max_fetch_depth","30");
    hibernateProperties.setProperty("hibernate.default_batch_fetch_size","30");
    hibernateProperties.setProperty("hibernate.jdbc.batch_size","30");//N + 1
    hibernateProperties.setProperty("hibernate.order_updates", "true");

    hibernateProperties.setProperty("org.hibernate.SQL","true");
    hibernateProperties.setProperty("org.hibernate.type","true");


    localSessionFactoryBean.setHibernateProperties(hibernateProperties);

    return localSessionFactoryBean;

}

私が使用している ことを観察してください:hibernateProperties.setProperty("hibernate.connection.provider_class","com.zaxxer.hikari.hibernate.HikariConnectionProvider");

しかし、私はいつも受け取ります:

Caused by: java.lang.IllegalArgumentException: one of either dataSource or dataSourceClassName must be specified
    at com.zaxxer.hikari.AbstractHikariConfig.validate(AbstractHikariConfig.java:747)
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:73)
    at com.zaxxer.hikari.hibernate.HikariConnectionProvider.configure(HikariConnectionProvider.java:80)
    ... 54 more

ベータ版でも

@Bean(name="dataSource", destroyMethod="close")
public DataSource dataSourceDevelopment() throws Exception{

    HikariConfig hc = new HikariConfig();
    //hc.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
    hc.setDriverClassName("com.mysql.jdbc.Driver");
    hc.setJdbcUrl("jdbc:mysql://localhost:3306/manolodb_01");
    hc.setUsername("user");
    hc.setPassword("password");
    hc.setPoolName("hikaricp-manolodb_01-pool");
    hc.addDataSourceProperty("databaseName", "manolodb_01");
    hc.addDataSourceProperty("cachePrepStmts", "true");
    hc.addDataSourceProperty("prepStmtCacheSize", "250");
    hc.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
    hc.addDataSourceProperty("useServerPrepStmts", "true");

    HikariDataSource hds = new HikariDataSource(hc);        
    return hds;
}

同じエラー メッセージが表示されます。

コメントしたら気づいた

  • hibernateProperties.setProperty("hibernate.connection.provider_class","com.zaxxer.hikari.hibernate.HikariConnectionProvider");

エラーはありません。なぜこの動作ですか?

2 番目のリンクに次のように記載されているため、構成は正しいと思います。

In order to use the HikariConnectionProvider in Hibernate 4.x add the    
following property to your hibernate.properties configuration file:

hibernate.connection.provider_class=com.zaxxer.hikari.hibernate.HikariConnectionProvider

それが私が持っているものです…</p>

2番目のリンクが提供するhibernate.propertiesにHikariCP構成プロパティを直接含めたくありません。

4

1 に答える 1

4

DataSourceを hibernate で使用するように構成するには、春に を完全に構成して のプロパティにDataSource挿入するか、休止状態のプロパティを使用してを構成するかの 2 つのオプションがあります。dataSourceLocalSessionFactoryBeanDataSourcehibernate.connection.provider_class

于 2015-02-23T21:03:17.200 に答える