2017-06-19 121 views
0

我有一个REST风格的Web应用程序,它存储针对Oracle的数据,堆栈是Spring-Data-Jpa和Hibernate。弹簧数据JPA和连接池

我们已经使用Oracle UCP实现了连接池,但似乎无法工作。在我们的NFT测试中,DB中有1000个连接。

我的配置如下

@Bean 
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws IllegalStateException, SQLException { 
    LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); 
    entityManagerFactoryBean.setDataSource(dataSource()); 
    entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class); 
    entityManagerFactoryBean.setPackagesToScan(env.getRequiredProperty(ENTITYMANAGER_PACKAGES_TO_SCAN)); 
    entityManagerFactoryBean.setJpaProperties(hibProperties());   
    return entityManagerFactoryBean; 
} 

@Bean 
public DataSource dataSource() throws IllegalStateException, SQLException { 
    PoolDataSource dataSource = PoolDataSourceFactory.getPoolDataSource(); 

    dataSource.setConnectionFactoryClassName(env.getRequiredProperty(DB_CONNECTION_FACTORY_CLASS_NAME)); 
    dataSource.setURL(env.getRequiredProperty(DATABASE_URL)); 
    dataSource.setUser(env.getRequiredProperty(DATABASE_USERNAME)); 
    dataSource.setPassword(env.getRequiredProperty(DATABASE_PASSWORD)); 
    dataSource.setMinPoolSize(Integer.parseInt(env.getRequiredProperty(DATABASE_CONNECTION_MIN_POOL_SIZE))); 
    dataSource.setMaxPoolSize(Integer.parseInt(env.getRequiredProperty(DATABASE_CONNECTION_MAX_POOL_SIZE))); 
    dataSource.setInitialPoolSize(Integer.parseInt(env.getRequiredProperty(DATABASE_CONNECTION_INITIAL_POOL_SIZE))); 

    return dataSource; 
}  


private Properties hibProperties() { 
    Properties properties = new Properties(); 
    properties.put(HIBERNATE_DIALECT, env.getRequiredProperty(HIBERNATE_DIALECT)); 
    properties.put(HIBERNATE_SHOW_SQL, env.getRequiredProperty(HIBERNATE_SHOW_SQL)); 
    /*properties.put(HIBERNATE_NAMING_STRATEGY, env.getRequiredProperty(HIBERNATE_NAMING_STRATEGY));*/ 
    return properties; 
} 

如让我知道如果有,我应该在这里使用另一种配置,使得新的会话不会创建所有的时间。

感谢

克里斯

回答