Spring Boot - JDBC

Spring Boot - JDBC 首页 / Spring Boot入门教程 / Spring Boot - JDBC

Spring Boot JDBC 提供了用于将应用程序与JDBC连接的启动程序和库。

在Spring Boot JDBC中,与数据库相关的Bean(例如 DataSource,JdbcTemplate NamedParameterJdbcTemplate )会在启动期间自动配置并创建。如果要使用它们,无涯教程可以自动连接这些类。例如:

@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

application.properties 文件中,配置 DataSource 连接池。 Spring Boot 默认选择 tomcat 池。

JDBC连接池

JDBC连接池是一种管理多个数据库连接请求的机制。换句话说,它促进了连接重用,即数据库连接的内存缓存,称为连接池。连接池模块将其维护为任何标准JDBC驱动程序产品之上的一层。

Spring Boot jdbc

它提高了数据访问的速度,并减少了应用程序的数据库连接数。它还可以提高应用程序的性能。连接池执行以下任务:

  • 管理可用连接
  • 分配新连接
  • 关闭连接
Spring Boot jdbc

在上图中,有个客户端,一个连接池(具有四个可用连接)和 a DataSource

在第一个图中,三个客户端连接了不同的连接,并且一个连接可用。在第二张图中,客户端3已断开连接,并且该连接可用。

客户端完成工作后,它将释放连接,该连接可用于其他客户端。

HikariCP

Spring Boot 2中的默认连接池是HikariCP。它提供了企业就绪的功能和更好的性能。 HikariCP是提供连接池机制的JDBC数据源实现。

  • 如果HikariCP存在于类路径中,则Spring Boot会自动对其进行配置。
  • 如果在类路径上找不到HikariCP,Spring Boot将寻找Tomcat JDBC连接池。如果它在类路径Spring Boot上,则将其拾取。
  • 如果以上两个选项都不可用,则Spring Boot选择Apache Commons DBCP2作为JDBC连接池。

如果无涯教程不想使用默认的连接池,也可以手动配置连接池。假设要使用Tomcat JDBC连接池而不是HikariCP。将排除HikariCP依赖性,并在pom.xml文件中添加tomcat-jdbc依赖性,如下所示。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</ artifactId >
  <exclusions>
    <exclusion>
      <groupId>com.zaxxer</groupId>
      <artifactId>HikaCP</artifactId >
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-jdbc</artifactId>
  <version>9.0.10</version>
</dependency>
<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <version>1.4.9</version>
  <socpe>runtime</scoope>
</dependency>

上面的方法允许无涯教程使用Tomcat连接池,而不必编写 @Configuration 类并以编程方式定义 DataSource bean。

另一方面,也可以跳过Spring Boot使用的连接池扫描算法。可以通过在application.properties文件中添加属性 spring.datasource.type 来显式指定连接池数据源。

Spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

无涯教程已经建立了Tomcat连接池。现在,将在 application.properties 中添加一些属性,以优化其性能并满足某些特定要求。

spring.datasource.tomcat.initial-size=20
spring.datasource.tomcat.max-wait=25000
spring.datasource.tomcat.max-active=70
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=9
spring.datasource.tomcat.default-auto-commit=true

如果要连接到 MySQL 数据库,则需要在应用程序的类路径中包括JDBC驱动程序:

<!-- MySQL JDBC driver -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>   

之后,在 application.properties 文件中定义 datasoure 属性。

如果您使用的是 MySQL 数据库,请使用以下属性:

spring.datasource.url=jdbc:mysql://192.168.1.4:3306/test
spring.datasource.username=learnfk
spring.datasource.password=password

如果使用的是 Oracle 数据库,请使用以下属性:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=system
spring.datasource.password=Password123

Note: 默认情况下,Spring Boot 2使用HikariCP作为数据库连接池。如果类路径中不存在HikariCP,则Spring Boot默认情况下会选择tomcat池。

Spring Boot JDBC

除了实现之外, Spring JDBC 和Spring Boot JDBC的函数是相同的。与Spring JDBC相比,Spring Boot JBDC具有以下优点:

Spring Boot JDBC Spring JDBC
仅需要一个 spring-boot-starter-jdbc 依赖项。在Spring JDBC中,需要配置多个依赖项,例如 spring-jdbc spring-context。
如果未明确维护,它将自动配置Datasource bean。如果不想使用bean,可以将属性 spring.datasource.initialize 设置为 false 在Spring JDBC中,必须使用 XML javaconfig 创建数据库Bean。
不需要注册模板bean,因为Spring Boot会自动注册bean。必须注册模板bean,例如 PlatformTransactionManager,JDBCTemplate,NamedParameterJdbcTemplate
.sql文件中存储的任何数据库初始化脚本都会自动执行。如果在SQL文件中创建了任何数据库初始化脚本(例如删除或创建表),则需要在配置中显式提供此信息。

JDBC与Hibernate

JDBCHibernate
JDBC是一种技术 Hibernate是一个 ORM 框架。
在JDBC中,用户负责创建和关闭连接。在Hibernate中,运行时系统负责创建和关闭连接。
它不支持延迟加载。它支持延迟加载,从而提供更好的性能。
它不支持关联(两个单独的类之间的连接)。它支持关联。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术与商业案例解读 -〔徐飞〕

玩转Spring全家桶 -〔丁雪丰〕

Python核心技术与实战 -〔景霄〕

消息队列高手课 -〔李玥〕

分布式数据库30讲 -〔王磊〕

数据分析思维课 -〔郭炜〕

Dubbo源码剖析与实战 -〔何辉〕

AI大模型系统实战 -〔Tyler〕

Rust 语言从入门到实战 -〔唐刚〕

好记忆不如烂笔头。留下您的足迹吧 :)