SpringBoot学习笔记12-Data(SQL)

以spring官方文档为基础,官方地址:Spring Boot_Data

Spring Boot集成了许多数据技术,无论是SQL还是NoSQL。本篇内容为:SQL

Spring框架为使用SQL数据库提供了广泛的支持,从使用JdbcTemplate直接访问JDBC到完成Hibernate等“对象关系映射”技术。Spring Data提供了一种额外的功能:直接从接口创建Repository实现,并使用“从方法名生成查询”的约定。

1. 配置数据源_DataSource

Java的javax.sql.DataSource接口提供了处理数据库连接的标准方法。通常,“DataSource”使用URL和一些凭据来建立数据库连接。

1.1 嵌入式数据库

使用内存中的嵌入式数据库开发应用程序通常很方便。显然,内存中的数据库不提供持久存储。需要在应用程序启动时填充数据库,并准备在应用程序结束时丢弃数据。

Spring Boot可以自动配置嵌入式H2、HSQL和Derby数据库。不需要提供任何连接url。只需要包含对要使用的嵌入式数据库的构建依赖项。如果类路径上有多个嵌入式数据库,则设置spring.datasource.embedded-database-connection属性来控制使用哪一个。将该属性设置为none将禁用嵌入式数据库的自动配置。

如果在测试中使用此特性,可能会注意到,无论使用的应用程序上下文的数量如何,整个测试套件都重用了相同的数据库。如果想确保每个上下文都有一个独立的嵌入式数据库,可设置spring.datasource.generate-unique-name为true。

使用嵌入式数据库的的一个POM依赖例子为:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <scope>runtime</scope>
</dependency>

嵌入式数据库需要依赖spring-jdbc才能自动配置。在本例中,它通过spring-boot-starter-data-jpa传递地被拉入。

无论出于什么原因,如果确实为嵌入式数据库配置了连接URL,请确保禁用了数据库的自动关闭功能。如果使用H2,应该使用DB_CLOSE_ON_EXIT=FALSE。如果使用HSQLDB,应该确保不使用shutdown=true。禁用数据库的自动关闭功能可以让Spring Boot控制何时关闭数据库,从而确保一旦不再需要访问数据库,Spring Boot就会关闭数据库。

1.2 连接到生产数据库

生产数据库连接也可以通过使用池数据源自动配置。

1.3 数据源配置

数据源配置由spring.datasource.*中的外部配置属性控制。例如,可以在application.properties中声明以下部分:

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass

至少应该通过设置spring.datasource.url属性来指定URL。否则,Spring Boot会尝试自动配置嵌入式数据库。

Spring Boot可以从URL推断出大多数数据库的JDBC驱动程序类。如果需要指定一个特定的类,可以使用spring.datasource.driver-class-name属性。

创建池数据源时,需要先验证Driver类是否可用,所以需要进行检查。换句话说,如果设置了spring.datasource.driver-class-name=com.mysql.jdbc.Driver,那么该类必须是可加载的。

更多支持的选项请参见DataSourceProperties。这些是标准选项,不管实际实现如何,它们都可以工作。也可以通过使用它们各自的前缀来调整特定于实现的设置(比如spring.datasource.hikari., spring.datasource.tomcat., spring.datasource.dbcp2., spring.datasource.oracleucp.)。有关详细信息,请参阅你正在使用的连接池实现的文档。

例如,如果使用的是Tomcat连接池,则可以自定义许多额外的设置,如下所示:

spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.test-on-borrow=true

上述设置表明:如果没可用的连接,在抛出异常之前pool至多等待10000ms,且将最大连接数限制为50,并在从池使用连接之前验证连接。

1.4 支持的连接池

Spring Boot使用以下算法来选择一个特定的实现:

  • 更偏向使用HikariCP,因为它的性能和并发性。如果HikariCP可用,Spring Boot总是选择它。

  • 否则,如果Tomcat池数据源可用,就使用它。

  • 否则,如果Commons DBCP2可用,就使用它。

  • 如果HikariCP、Tomcat和DBCP2都不可用,并且Oracle UCP可用,就使用它。

如果使用的是spring-boot-starter-jdbc或spring-boot-starter-data-jpa“启动器”,那么将会自动获得对HikariCP的依赖。

也可以完全绕过该算法,并通过设置spring.datasource.type属性指定要使用的连接池。有一个点需要注意:如果在Tomcat容器中运行应用程序,Tomcat -jdbc是默认提供的。

额外的连接池总是可以使用DataSourceBuilder手动配置。DataSourceBuilder支持以下连接池:

  • HikariCP
  • Tomcat pooling Datasource
  • Commons DBCP2
  • Oracle UCP和OracleDataSource
  • Spring框架的SimpleDriverDataSource
  • H2 JdbcDataSource
  • PostgreSQL PGSimpleDataSource

1.5 连接到JNDI数据源

如果将Spring Boot应用程序部署到application Server,你可能希望通过使用application Server的内置特性来配置和管理数据源,并通过使用JNDI来访问它。

spring.datasource.jndi-name属性可作为spring.datasource.url, spring.datasource.username, 和spring.datasource.password的一个代替,它可以实现从特定的JNDI位置访问DataSource。例如,以下例子展示了如何访问JBoss 数据源:

spring.datasource.jndi-name=java:jboss/datasources/customers

2. 使用JdbcTemplate

Spring的JdbcTemplate和NamedParameterJdbcTemplate类是自动配置的,可以直接@Autowire它们到自己的bean中,如下面的例子所示:

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以和你分享一些关于Spring Boot学习笔记。 1. Spring Boot是什么? Spring Boot是一个基于Spring框架的快速开发框架,它能够帮助开发者快速搭建Spring项目,简化了Spring应用开发的繁琐过程,提高了开发效率。 2. Spring Boot的优点有哪些? Spring Boot的优点有很多,其中包括: - 简化了Spring应用的开发,提高了开发效率; - 集成了很多常用的第三方库,减少了依赖管理的工作; - 自动化配置,减少了配置文件的编写工作; - 内嵌了Tomcat等Web容器,使得应用的部署更加便捷; - 提供了Actuator等模块,使得应用的监控和管理更加便捷。 3. Spring Boot的核心注解有哪些? Spring Boot的核心注解包括: - @SpringBootApplication:标注在启动类上,代表这是一个Spring Boot应用; - @Controller:标注在控制器类上,处理HTTP请求; - @Service:标注在服务类上,用于处理业务逻辑; - @Repository:标注在数据访问类上,用于数据库访问; - @Configuration:标注在配置类上,用于配置Spring应用上下文。 4. Spring Boot的配置文件有哪些? Spring Boot的配置文件包括: - application.properties:基于Key-Value的属性文件; - application.yml:基于YAML语法的配置文件。 5. 如何使用Spring Boot集成数据库? 使用Spring Boot集成数据库需要完成以下几个步骤: - 在pom.xml中添加相关数据库依赖; - 配置数据源和JPA/Hibernate等相关配置; - 编写实体类和DAO层代码。 以上就是一些关于Spring Boot学习笔记,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值