📅  最后修改于: 2021-01-11 05:32:07             🧑  作者: Mango
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驱动程序产品之上的一层。
它提高了数据访问的速度,并减少了应用程序的数据库连接数。它还可以提高应用程序的性能。连接池执行以下任务:
在上图中,有客户端,一个连接池(具有四个可用连接)和一个DataSource 。
在第一个图中,三个客户端连接了不同的连接,并且一个连接可用。在第二张图中,客户端3已断开连接,并且该连接可用。
客户端完成工作后,它将释放连接,该连接可用于其他客户端。
Spring Boot 2中的默认连接池是HikariCP 。它提供了企业就绪的功能和更好的性能。 HikariCP是提供连接池机制的JDBC数据源实现。
如果我们不想使用默认连接池,我们也可以手动配置连接池。假设我们要使用Tomcat JDBC连接池而不是HikariCP。我们将排除HikariCP依赖性,并在pom.xml文件中添加tomcat-jdbc依赖性,如下所示。
org.springframework.boot
spring-boot-starter-data-jpa artifactId >
com.zaxxer
HikariCP artifactId >
org.apache.tomcat
tomcat-jdbc
9.0.10
com.h2database
h2
1.4.9
runtime
上面的方法允许我们使用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
mysql-connector-java
之后,在application.properties文件中定义datasoure属性。
如果使用的是MySQL数据库,请使用以下属性:
spring.datasource.url=jdbc:mysql://192.168.1.4:3306/test
spring.datasource.username=javatpoint
spring.datasource.password=password
如果使用的是Oracle数据库,请使用以下属性:
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=system
spring.datasource.password=Password123
注意:默认情况下,Spring Boot 2使用HikariCP作为数据库连接池。如果在类路径中没有HikariCP,Spring Boot默认会选择tomcat池。
除了实现之外, Spring JDBC和Spring Boot JDBC的功能相同。与Spring JDBC相比,Spring Boot JBDC具有以下优点:
Spring Boot JDBC | Spring JDBC |
---|---|
There is only a spring-boot-starter-jdbc dependency is required. | In Spring JDBC, multiple dependencies need to be configured like spring-jdbc and spring-context. |
It automatically configures Datasource bean, if not maintain explicitly. If we do not want to use the bean, we can set a property spring.datasource.initialize to false. | In Spring JDBC, it is necessary to create a database bean either using XML or javaconfig. |
We do not need to register Template beans because Spring Boot automatically registers beans. | The Template beans such as PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate must be registered. |
Any db initialization scripts stored in .sql file gets executed automatically. | If any db initialization scripts like dropping or creation of tables are created in SQL file, this info needs to be given explicitly in the configuration. |
JDBC | Hibernate |
---|---|
JDBC is a technology. | Hibernate is an ORM framework. |
In JDBC, the user is responsible for creating and closing the connections. | In Hibernate, the run time system takes care of creating and closing the connections. |
It does not support lazy loading. | It supports lazy loading that offers better performance. |
It does not support associations (the connection between two separate classes). | It supports associations. |
在下一节中,我们将学习Spring Boot应用程序中MySQL的连接性。