AWS RDS 始终使用 Spring Boot (JPA) 打开 10 个连接

AWS RDS always with 10 connections open using Spring Boot (JPA)

我的项目出现问题,我的数据库始终打开 10 个连接。我正在使用 Elastic Beanstalk 上的 Spring 启动应用程序 (REST API) 运行。

这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

我会不会做错了什么?我是否缺少任何配置参数?

提前致谢。

spring.datasource.hikari.maximumPoolSize 设置为合适的值。

解释:

  • Hikari 是自 2.0
  • 以来 Spring 引导的默认 JDBC 连接池
  • 它预先打开与数据库的连接并将它们保留在空闲池中
  • 默认为 10
  • spring.datasource.hikari.* 是 Hikari 的特定设置
  • Hikari Options as explained here