我有 Java - Spring Boot - Hibernate - Postgres 應用程序。Hibernate 在每次請求時都會創建數據庫連接,為什么?有可配置的嗎?例如,一次會議持續 10 分鐘?我的休眠配置:@Autowiredprivate Environment environment;@Beanpublic LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan(new String[] { "monitoring" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory;}@Beanpublic DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("org.postgresql.Driver"); dataSource.setUrl(environment.getRequiredProperty("spring.datasource.url")); dataSource.setUsername(environment.getRequiredProperty("spring.datasource.username")); dataSource.setPassword(environment.getRequiredProperty("spring.datasource.password")); return dataSource;}private Properties hibernateProperties() { Properties properties = new Properties(); properties.put("hibernate.dialect", environment.getRequiredProperty("spring.jpa.properties.hibernate.dialect")); properties.put("hibernate.show_sql", environment.getRequiredProperty("spring.jpa.hibernate.show-sql")); properties.put("hibernate.format_sql", "false"); properties.put("hibernate.jdbc.lob.non_contextual_creation", "true"); return properties;}我收到的每個請求都包含以下日志:11:19:13.584 [http-nio-8080-exec-2] DEBUG o.s.j.d.DriverManagerDataSource - Creating new JDBC DriverManager Connection to [jdbc:postgresql://localhost:5432/monit]為什么?我怎樣才能改變它?
1 回答

絕地無雙
TA貢獻1946條經驗 獲得超4個贊
由于定義了數據源,因此需要手動配置連接池。來自Spring 官方文檔:
如果您定義自己的 DataSource bean,則不會發生自動配置。
從 spring boot 2 開始,HikariCP
默認連接池嵌入了 spring boot starter (spring-boot-starter-jdbc
和spring-boot-starter-data-jpa
)。
您可以使用以下配置來配置最大池大小HikariCP
spring.datasource.hikari.maximum-pool-size=?10
添加回答
舉報
0/150
提交
取消