2017-06-19 142 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; 
} 

如讓我知道如果有,我應該在這裏使用另一種配置,使得新的會話不會創建所有的時間。

感謝

克里斯

回答