aws rds始终使用spring boot(jpa)打开10个连接

snz8szmq  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(438)

我在我的项目中遇到了一个问题,我的数据库总是有10个连接打开。我使用的是在ElasticBeanstalk上运行的spring引导应用程序(RESTAPI)。
这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

我会做错什么吗?是否缺少任何配置参数?
先谢谢你。

eimct9ow

eimct9ow1#

spring.datasource.hikari.maximumPoolSize 到一个合适的值。
说明:
hikari是自2.0以来spring引导的默认jdbc连接池
它会提前打开到数据库的连接,并将它们保留在空闲池中
默认值为10 spring.datasource.hikari.* 是hikari的特定设置
hikari选项如此处所述

相关问题