Spring Boot JDBC项目示例图解

本文概述

  • JDBC连接池
  • 为什么要使用Spring Boot JDBC?
  • JDBC与Hibernate
Spring Boot JDBC提供了用于将应用程序与JDBC连接的启动程序和库。
在Spring Boot JDBC中, 与数据库相关的bean(例如DataSource, JdbcTemplate和NamedParameterJdbcTemplate)会在启动期间自动配置并创建。如果要使用它们, 我们可以自动连接这些类。例如:
@AutowiredJdbcTemplate jdbcTemplate; @Autowiredprivate NamedParameterJdbcTemplate jdbcTemplate;

在application.properties文件中, 我们配置数据源和连接池。 Spring Boot默认选择tomcat池。
JDBC连接池 JDBC连接池是一种管理多个数据库连接请求的机制。换句话说, 它有助于连接重用, 这是数据库连接的内存缓存, 称为连接池。连接池模块将其维护为任何标准JDBC驱动程序产品之上的一层。
Spring Boot JDBC项目示例图解

文章图片
它提高了数据访问的速度, 并减少了应用程序的数据库连接数。它还可以提高应用程序的性能。连接池执行以下任务:
  • 管理可用的连接
  • 分配新的连接
  • 紧密连接
Spring Boot JDBC项目示例图解

文章图片
在上图中, 有客户端, 一个连接池(具有四个可用连接)和一个数据源。
在第一个图中, 三个客户端连接了不同的连接, 并且一个连接可用。在第二张图中, 客户端3已断开连接, 并且该连接可用。
客户端完成工作后, 它将释放连接, 该连接可用于其他客户端。
光ikaCP
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> HikariCP< / 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>

【Spring Boot JDBC项目示例图解】上面的方法允许我们使用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=20spring.datasource.tomcat.max-wait=25000spring.datasource.tomcat.max-active=70spring.datasource.tomcat.max-idle=20spring.datasource.tomcat.min-idle=9spring.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/testspring.datasource.username=srcminispring.datasource.password=password

如果使用的是Oracle数据库, 请使用以下属性:
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orclspring.datasource.username=systemspring.datasource.password=Password123

注意:默认情况下, 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。 必须注册Template Bean, 例如PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate。
存储在.sql文件中的所有数据库初始化脚本都会自动执行。 如果在SQL文件中创建了任何数据库初始化脚本(如删除或创建表), 则需要在配置中显式提供此信息。
JDBC与Hibernate
JDBC Hibernate
JDBC是一项技术。 Hibernate是一个ORM框架。
在JDBC中, 用户负责创建和关闭连接。 在Hibernate中, 运行时系统负责创建和关闭连接。
它不支持延迟加载。 它支持延迟加载, 从而提供更好的性能。
它不支持关联(两个单独的类之间的连接)。 它支持关联。
在下一节中, 我们将学习Spring Boot应用程序中MySQL的连接性。

    推荐阅读