Почему Hibernate создает новое соединение с базой данных каждый запрос? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть приложение Java - Spring Boot - Hibernate - Postgres.И hibernate создает соединение с базой данных каждый запрос, почему?Есть ли настраиваемый?Например, для одного сеанса, который будет длиться 10 минут?

Моя конфигурация Hibernate:

@Autowired
private Environment environment;

@Bean
public LocalSessionFactoryBean sessionFactory() {
    LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
    sessionFactory.setDataSource(dataSource());
    sessionFactory.setPackagesToScan(new String[] { "monitoring" });
    sessionFactory.setHibernateProperties(hibernateProperties());
    return sessionFactory;
}

@Bean
public 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 Ответ

3 голосов
/ 19 сентября 2019

Вам необходимо настроить пулы соединений вручную, так как вы определяете источник данных.Из Официальной документации Spring :

Если вы определяете свой собственный компонент DataSource, автоконфигурация не происходит.

Начиная с весенней загрузки 2,HikariCP - это пул подключений по умолчанию, встроенный с помощью пружинного загрузчика (spring-boot-starter-jdbc и spring-boot-starter-data-jpa).

Максимальный размер пула можно настроить с помощью следующей конфигурации с помощью HikariCP

spring.datasource.hikari.maximum-pool-size= 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...