Getting Started
Spring Data JDBC 模块的主要优点之一是它支持多种不同的关系数据库,包括 DB2、H2、HSQLDB、MariaDB、Microsoft SQL Server、MySQL、Oracle 和 Postgres。它还提供了一个简单的编程模型,使开发者能够轻松使用熟悉和标准的 Java 语言特性来处理数据库操作。
启动工作环境的简单方法是在 Spring Tools 中或从 Spring Initializr 中创建一个基于 Spring 的项目。 首先,你需要设置一个正在运行的数据库服务器。有关如何为 JDBC 访问配置数据库的详细说明,请参阅供应商文档。
Requirements
Spring Data JDBC 需要 Spring Framework {springVersion} 及更高版本。
就数据库而言,Spring Data JDBC 需要 jdbc.dialects 来抽象针对特定于供应商的风格的常见的 SQL 功能。Spring Data JDBC 直接支持以下数据库:
-
DB2
-
H2
-
HSQLDB
-
MariaDB
-
Microsoft SQL Server
-
MySQL
-
Oracle
-
Postgres
如果你使用其他数据库,那么你的应用将无法启动。jdbc.dialects 部分包含了有关在这种情况下如何继续进行的更多详细信息。
Hello World
如何在 STS 中创建 Spring 项目:
-
转到文件 → 新建 → Spring 模板项目 → 简单 Spring 实用程序项目,并在出现提示时按是。然后输入一个项目和包名,例如
org.spring.jdbc.example
。 -
将以下内容添加到
pom.xml
文件dependencies
元素中: -
将以下内容添加到 pom.xml 文件
dependencies
元素中:[source, xml]
<dependencies> <!-- other dependency elements omitted --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jdbc</artifactId> <version>{version}</version> </dependency> </dependencies>
-
将 pom.xml 中 Spring 版本更改为[source, xml]
<spring.version>{springVersion}</spring-framework.version>
-
将以下 Spring Milestone 存储库位置添加到您的
pom.xml
中,使其位于与<dependencies/>
元素相同的级别:[source, xml]
<repositories> <repository> <id>spring-milestone</id> <name>Spring Maven MILESTONE Repository</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories>
存储库也是 browseable here。
Logging
Spring Data JDBC 自身几乎不会进行日志记录。相反,JdbcTemplate
发出 SQL 语句的机制提供了日志记录。因此,如果您想检查运行了哪些 SQL 语句,请为 Spring 的 {spring-framework-docs}/data-access.html#jdbc-JdbcTemplate[NamedParameterJdbcTemplate
] 或 MyBatis 激活日志记录。
您可能还想将日志级别设置为 DEBUG
以查看一些其他信息。为此,请编辑 application.properties
文件,使文件具有以下内容:
logging.level.org.springframework.jdbc=DEBUG
Examples Repository
有一个 GitHub repository with several examples 供您下载和使用,以便了解该库的工作原理。
Configuration
Spring Data JDBC 存储库支持可以通过 Java 配置的注释激活,如下面的示例所示:
@Configuration
@EnableJdbcRepositories (1)
class ApplicationConfig extends AbstractJdbcConfiguration { (2)
@Bean
DataSource dataSource() { (3)
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
return builder.setType(EmbeddedDatabaseType.HSQL).build();
}
@Bean
NamedParameterJdbcOperations namedParameterJdbcOperations(DataSource dataSource) { (4)
return new NamedParameterJdbcTemplate(dataSource);
}
@Bean
TransactionManager transactionManager(DataSource dataSource) { (5)
return new DataSourceTransactionManager(dataSource);
}
}
1 | @EnableJdbcRepositories 为派生自 Repository 的接口创建实现 |
2 | AbstractJdbcConfiguration 提供 Spring Data JDBC 要求的各种默认 bean |
3 | 创建一个连接到数据库的 DataSource 。下面的两个 bean 方法需要此连接。 |
4 | 创建 Spring Data JDBC 用于访问数据库的 NamedParameterJdbcOperations 。 |
5 | Spring Data JDBC 使用 Spring JDBC 提供的事务管理。 |
前面示例中的配置类使用 spring-jdbc
的 EmbeddedDatabaseBuilder
API 设置了一个嵌入式 HSQL 数据库。DataSource
接着被用来设置 NamedParameterJdbcOperations
和 TransactionManager
。我们最终通过使用 @EnableJdbcRepositories
激活 Spring Data JDBC 存储库。如果没有配置基包,则它将使用配置类所在的包。扩展 AbstractJdbcConfiguration
可以确保注册各种 bean。覆盖它的方法可以用来定制设置(见下文)。
可以使用 Spring Boot 进一步简化此配置。使用 Spring Boot,在将 starter spring-boot-starter-data-jdbc
包含在依赖项中后,DataSource
就足够了。其他所有事情都由 Spring Boot 完成。
在此设置中,有几件事可能需要定制。
Dialects
Spring Data JDBC 使用界面 Dialect
的实现来封装特定于数据库或其 JDBC 驱动程序的行为。默认情况下,AbstractJdbcConfiguration
尝试通过获取连接并注册正确的 Dialect
从数据库配置确定方言。你可以覆盖 AbstractJdbcConfiguration.jdbcDialect(NamedParameterJdbcOperations)
来定制方言选择。
如果你使用没有可用方言的数据库,那么你的应用将无法启动。在这种情况下,你必须要求供应商提供 Dialect
实现。作为替代,你可以实现你自己的 Dialect
。
方言由 {spring-data-jdbc-javadoc}/org/springframework/data/jdbc/repository/config/DialectResolver.html[
|