java连接数与JPA配置中的连接池大小不同
我在我的应用程序中使用Spring Boot,并将C3P0用于连接池。当我查询数据库时,即使是刚启动的应用程序也会显示14个连接
SELECT usename, count(*) as count FROM pg_stat_activity group by usename
当我给应用程序一些负载时,它就会达到config+~14连接中指定的计数。我不确定这些连接是从哪里打开的
这是我初始化数据库的配置文件
public class PgDataSourceConfig {
@Autowired
JpaVendorAdapter jpaVendorAdapter;
@Autowired
DataSource dataSource;
@Value("${spring.datasource.url}")
private String databaseUrl;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${pg.import_files}")
private String importFiles;
@Value("${pg.hbm2ddl.auto}")
private String hbm2Ddl;
@Value("${pg.default_schema}")
private String default_schema;
@Value("${hibernate.jdbc.batch_size}")
private String batch_size;
@Value("${hibernate.c3p0.max_size}")
private String max_size;
@Value("${hibernate.c3p0.min_size}")
private String min_size;
@Value("${hibernate.c3p0.timeout}")
private String timeout;
@Value("${hibernate.c3p0.max_statements}")
private String max_statements;
@Value("${hibernate.c3p0.idle_test_period}")
private String idle_test_period;
@Value("${hibernate.c3p0.acquire_increment}")
private String acquire_increment;
@Value("${hibernate.c3p0.validate}")
private String validate;
@Value("${pg.format_sql}")
private String formatSql;
@Value("${pg.use_sql_comments}")
private String useSqlComments;
@Bean
@DependsOn(value = {"flyway"})
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {
Properties properties = new Properties();
properties.setProperty("hibernate.connection.driver_class", "org.postgresql.Driver");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQL9Dialect");
properties.setProperty("hibernate.hbm2ddl.auto", hbm2Ddl);
properties.setProperty("hibernate.connection.url", databaseUrl);
properties.setProperty("hibernate.connection.username", username);
properties.setProperty("hibernate.connection.password", password);
properties.setProperty("hibernate.hbm2ddl.import_files", importFiles);
properties.setProperty("hibernate.format_sql", formatSql);
properties.setProperty("hibernate.use_sql_comments", useSqlComments);
properties.setProperty("hibernate.jdbc.batch_size", batch_size);
properties.setProperty("hibernate.connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider");
properties.setProperty("hibernate.c3p0.max_size", max_size);
properties.setProperty("hibernate.c3p0.min_size", min_size);
properties.setProperty("hibernate.c3p0.timeout", timeout);
properties.setProperty("hibernate.c3p0.max_statements", max_statements);
properties.setProperty("hibernate.c3p0.idle_test_period", idle_test_period);
properties.setProperty("hibernate.c3p0.acquire_increment", acquire_increment);
properties.setProperty("hibernate.c3p0.validate", validate);
properties.setProperty("hibernate.id.new_generator_mappings", "true");
final LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
localContainerEntityManagerFactoryBean.setDataSource(dataSource);
localContainerEntityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
localContainerEntityManagerFactoryBean.setPackagesToScan("com.test");
localContainerEntityManagerFactoryBean.setPersistenceUnitName("default");
localContainerEntityManagerFactoryBean.setJpaProperties(properties);
localContainerEntityManagerFactoryBean.afterPropertiesSet();
return localContainerEntityManagerFactoryBean;
}
@Bean(name = "entityManager")
public EntityManager entityManager() {
return entityManagerFactory().createEntityManager();
}
@Primary
@Bean(name = "entityManagerFactory")
public EntityManagerFactory entityManagerFactory() {
LocalContainerEntityManagerFactoryBean emf = this.entityManagerFactoryBean();
return emf.getObject();
}
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager() {
JpaTransactionManager tm = new JpaTransactionManager();
tm.setEntityManagerFactory(entityManagerFactory());
return tm;
}
}
这些是属性文件中的值
spring.jpa.database=POSTGRESQL
spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.username=ashwani
spring.datasource.password=ashwani
pg.import_files=lookup.sql,data.sql
pg.hbm2ddl.auto=validate
hibernate.c3p0.max_size= 10
hibernate.c3p0.min_size= 1
hibernate.c3p0.timeout =10
hibernate.c3p0.max_statements =100
hibernate.c3p0.idle_test_period =3
hibernate.c3p0.acquire_increment =1
hibernate.c3p0.validate =false
hibernate.jdbc.batch_size=25
我不确定导致额外连接的配置中有什么错误。 我怎样才能解决这个问题? 谢谢
共 (0) 个答案