SpringBoot Application
DB connection
spring jdbc connection
依賴jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
spring data jpa
Spring boot 連線池
Default
application.properties 中没有显式配置 spring.datasource.hikari,连接池仍然会起作用,但是会使用默认的连接池。在 Spring Boot 2.x 中,默认的连接池是 HikariCP。
spring.datasource.hikari.minimum-idle=20
spring.datasource.hikari.maximum-pool-size=200
connection
在 Spring Boot 2.x 中,默认的连接池是 HikariCP。如果你没有显式配置连接池的连接数,HikariCP 将使用默认的最小和最大连接数。这些默认值通常是: 最小连接数:10 最大连接数:100 这意味着连接池会始终保持至少10个连接,并且最多可以达到100个连接。当需要更多连接时,连接池会动态地创建新的连接,以满足应用程序的需求。如果连接池中的连接数超过最大连接数,新的连接请求将等待,直到有可用的连接。
EntityManager
在 Spring Boot 中使用 EntityManager 来操作数据库,连接池的上限仍然会受到管控。 EntityManager 是 Java Persistence API (JPA) 的一部分,用于管理实体对象与数据库之间的映射。它负责执行数据库操作,例如插入、更新和查询。
连接池的作用是管理数据库连接,无论你是使用 EntityManager 还是其他数据库操作方式,都需要从连接池获取连接。因此,连接池的连接数上限仍然适用。
如果你的应用程序使用了 EntityManager,连接池会根据配置的最大连接数来管理连接。
当你的应用程序需要执行数据库操作时,连接池会提供一个可用的连接。如果连接池中的连接数已达到最大连接数,新的连接请求将等待,直到有可用的连接。
spring.jpa.open-in-view
Open Session in View (OSIV) 模式:
OSIV 是一种事务模式,用于将持久性会话(例如 Hibernate Session)与请求的生命周期绑定在一起。 当请求进入时,Spring 会打开一个新的 Hibernate Session。这些 Session 不一定与数据库连接关联。 在应用程序需要 Session 时,它会重用已经存在的 Session。 在请求结束时,同一个拦截器会关闭该 Session。
spring.jpa.open-in-view : false 属性
默认情况下,Spring Boot 中的 OSIV 是激活的。 如果你没有显式配置 spring.jpa.open-in-view,Spring Boot 会在应用程序启动时警告你它已经启用了: