数据库支持中文-中文文献数据库
上一篇[30、安全]
下一篇[31.3、JPA 和 Spring Data JPA]
英文原文数据库支持中文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-sql.htmlGitHub:https://github.com/jijicai/Spring/tree/master/spring-boot31、使用 SQL 数据库Spring Framework 为使用 SQL 数据库提供数据库支持中文了广泛的支持数据库支持中文,从使用 JdbcTemplate 的直接 JDBC 访问到 Hibernate 等完整的对象关系映射技术。Spring Data 提供了额外的功能级别:直接从接口创建 Repository 实现,并使用约定从 *** 名生成查询。
31.1、配置数据源
Java 的 javax.sql.DataSource 接口提供了处理数据库连接的标准 *** 。传统上,“DataSource”使用 URL 和一些凭据来建立数据库连接。
提示:有关更高级的示例,请参阅“如何”章节,通常是为了完全控制数据源的配置。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/howto-data-access.html#howto-configure-a-datasource )
31.1.1、嵌入式数据库支持
使用内存中的嵌入式数据库开发应用程序通常很方便。显然,内存数据库不提供持久存储。你需要在应用程序启动时填充数据库,并准备在应用程序结束时丢弃数据。
提示:“如何”章节包括一个关于如何初始化数据库的部分。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/howto-database-initialization.html )
Spring Boot 可以自动配置嵌入式 H2、HSQL 和 Derby 数据库。你不需要提供任何连接 URL。只需要包含要使用的嵌入式数据库的构建依赖项。
注释:如果你在测试中使用此功能,你可能会注意到整个测试套件会重用同一个数据库,而不管你使用的应用程序上下文的数量是多少。如果要确保每个上下文都有单独的嵌入数据库,则应将 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 可以控制何时关闭数据库,从而确保在不再需要访问数据库时关闭数据库。
31.1.2、连接到生产数据库
还可以使用池化 DataSource 自动配置生产数据库连接。Spring Boot 使用以下算法来选择特定的实现。
(1)数据库支持中文我们更喜欢 HikariCP 的性能和并发性。如果 HikariCP 可用,我们总是选择它。
(2)否则,如果 Tomcat 池化 DataSource 可用,我们就使用它。
(3)如果 HikariCP 和 Tomcat 池化 DataSource 都不可用,并且 Commons DBCP2 可用,则使用它。
如果使用 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa “starters”,则自动地获得 HikariCP 的依赖项。
注释:你可以完全绕过该算法,并通过设置 spring.datasource.type 属性指定要使用的连接池。如果在 Tomcat 容器中运行应用程序,这一点尤其重要,因为 tomcat-jdbc 是默认提供的。
提示:始终可以手动配置其数据库支持中文他连接池。如果定义自己的 DataSource bean,则不会自动配置。
数据源配置由 spring.datasource.* 中的外部配置属性控制。例如,你可以在 application.properties 中声明以下部分:
spring.datasource.url=jdbc:mysql://localhost/testspring.datasource.username=dbuserspring.datasource.password=dbpassspring.datasource.driver-class-name=com.mysql.jdbc.Driver注释:至少应该通过设置 spring.datasource.url 属性来指定 URL.否则,Spring Boot 会尝试自动配置嵌入式数据库。
提示:你通常不需要指定 driver-class-name,因为 Spring Boot 可以从 url 推断大多数数据库的该值。
注释:为了创建一个池化 DataSource,我们需要能够验证一个有效的 Driver 类是否可用,所以我们在做任何事情之前都要检查它。换句话说,如果设置 spring.datasource.driver-class-name=com.mysql.jdbc.Driver,那么该类必须是可加载的。
有关支持的选项的详细信息,请参阅 DataSourceProperties。无论实际实现如何,这些都是标准选项。还可以通过使用它们各自的前缀(spring.datasource.hikari.*
、spring.datasource.tomcat.* 和 spring.datasource.dbcp2.*)来微调特定于实现的设置。有关详细信息,请参阅正在使用的连接池实现的文档。
例如,如果使用 Tomcat 连接池,可以自定义许多其他设置,如下面示例所示:
# Number of ms to wait before throwing an exception if no connection is available.spring.datasource.tomcat.max-wait=10000# Maximum number of active connections that can be allocated from this pool at the same time.spring.datasource.tomcat.max-active=50# Validate the connection before borrowing it from the pool.spring.datasource.tomcat.test-on-borrow=true31.1.3、连接到 JNDI 数据源
如果将 Spring Boot 应用程序部署到 Application Server,则可能需要使用 Application Server 的内置功能配置和管理 DataSource,并使用 JNDI 访问它。
spring.datasource.jndi-name 属性可以用作 spring.datasource.url、spring.datasource.username 和 spring.datasource.password 属性的代替项,以从特定 JNDI 位置访问 DataSource。例如,application.properties 中的以下部分显示了如何访问 JBoss AS 定义的 DataSource:
spring.datasource.jndi-name=java:jboss/datasources/customers31.2、使用 JdbcTemplate
Spring 的 JdbcTemplate 和 NamedParameterJdbcTemplate 类是自动配置的,可以直接将它们 @Autowire 到自己的 bean 中,如下面示例所示:
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Component;@Componentpublic class MyBean { private final JdbcTemplate jdbcTemplate; @Autowired public MyBean(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } // ...}可以使用 spring.jdbc.template.* 属性自定义模板的一些属性,如下面示例所示:
spring.jdbc.template.max-rows=500注释:NamedParameterJdbcTemplate 在后台重用相同的 JdbcTemplate 实例。如果定义了多个 JDBC 模板,并且没有主候选存在,则 NamedParameterJdbcTemplate 不是自动配置的。
上一篇[30、安全]
下一篇[31.3、JPA 和 Spring Data JPA]