AWS RDS всегда с 10 открытыми соединениями с использованием Spring Boot (JPA) - PullRequest
0 голосов
/ 24 сентября 2018

У меня проблема в моем проекте, где в моей базе данных всегда открыто 10 соединений.Я использую Spring Boot Application (REST API), который работает на Elastic Beanstalk.

10 подключений появляются сразу после запуска приложения, без запроса к базе данных.На данный момент у меня есть 4 класса репозиториев, которые выглядят так:

    @Repository
@Transactional()
public class FieldJpaRepository {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @PersistenceContext
    EntityManager entityManager;

    public List<Field> findAll(){ //JPQL
        TypedQuery<Field> namedQuery = entityManager.createNamedQuery("find_all_fields", Field.class);
        return namedQuery.getResultList();
    }

    public Field findById(int id){
        return entityManager.find(Field.class,id);
    }

    public List<Field> findAreaFields(float minLat, float maxLat, float minLng, float maxLng){
        return entityManager.createQuery("FROM Field f WHERE f.lat BETWEEN :minLat AND :maxLat AND f.lng BETWEEN :minLng AND :maxLng ", Field.class)
                .setParameter("minLat", minLat)
                .setParameter("maxLat", maxLat)
                .setParameter("minLng", minLng)
                .setParameter("maxLng", maxLng)
                .getResultList();
    }

    public Field updateOrInsertField(Field field){
        return entityManager.merge(field);
    }

    public void deleteField(int id){
        Field findField = findById(id);
        entityManager.remove(entityManager.contains(findField) ? findField : entityManager.merge(findField));
    }


}

Мой файл application.properties выглядит следующим образом:

spring.jpa.show-sql=true
spring.datasource.url=********
spring.datasource.username=******
spring.datasource.password=******
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto=create

Могу ли я сделать что-то не так?Я пропустил какой-либо параметр конфигурации?

Заранее спасибо.

1 Ответ

0 голосов
/ 24 сентября 2018

Установите spring.datasource.hikari.maximumPoolSize на подходящее значение.

Объяснение:

  • Hikari - это пул соединений JDBC по умолчанию для Spring Boot, начиная с 2.0
  • Открываетсяподключение к базе данных заранее и сохранение их в пуле бездействия
  • По умолчанию 10
  • spring.datasource.hikari.* - это конкретные настройки для Hikari
  • Hikari Options, как объясненоздесь
...