入门
一种轻松设置工作环境的方法是在 Spring Tools 或 Spring Initializr 中创建一个基于 Spring 的项目。
首先,您需要设置一个正在运行的数据库服务器。请参考您的供应商文档,了解如何为 JDBC 访问配置您的数据库。
要求
Spring Data JDBC 需要 Spring Framework 6.1.7 及更高版本。
在数据库方面,Spring Data JDBC 需要一个 方言 来抽象跨供应商特定风格的通用 SQL 功能。Spring Data JDBC 包含对以下数据库的直接支持
-
DB2
-
H2
-
HSQLDB
-
MariaDB
-
Microsoft SQL Server
-
MySQL
-
Oracle
-
Postgres
如果您使用的是其他数据库,那么您的应用程序将无法启动。 方言 部分包含有关在这种情况下如何操作的更多详细信息。
Hello World
要在 STS 中创建 Spring 项目
-
转到文件 → 新建 → Spring 模板项目 → 简单 Spring 实用程序项目,并在出现提示时按“是”。然后输入项目和包名称,例如
org.spring.jdbc.example
。 -
将以下内容添加到
pom.xml
文件的dependencies
元素中 -
将以下内容添加到 pom.xml 文件的
dependencies
元素中<dependencies> <!-- other dependency elements omitted --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jdbc</artifactId> <version>3.3.0</version> </dependency> </dependencies>
-
将 pom.xml 中的 Spring 版本更改为
<spring.version>6.1.7</spring-framework.version>
-
将以下 Spring Milestone 存储库位置添加到您的
pom.xml
中,使其与您的<dependencies/>
元素处于同一级别<repositories> <repository> <id>spring-milestone</id> <name>Spring Maven MILESTONE Repository</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories>
该存储库也可以 在这里浏览。
日志记录
Spring Data JDBC 本身几乎不进行日志记录。相反,JdbcTemplate
用于发出 SQL 语句的机制提供了日志记录。因此,如果您想检查运行了哪些 SQL 语句,请为 Spring 的 NamedParameterJdbcTemplate
或 MyBatis 激活日志记录。
您可能还想将日志级别设置为 DEBUG
以查看一些其他信息。为此,请编辑 application.properties
文件,使其包含以下内容
logging.level.org.springframework.jdbc=DEBUG
示例存储库
有一个 包含多个示例的 GitHub 存储库,您可以下载并试用,以了解该库的工作原理。
配置
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,一旦将启动器 spring-boot-starter-data-jdbc
包含在依赖项中,DataSource
就足够了。其他所有操作都由 Spring Boot 完成。
在此设置中,可能需要自定义一些事项。
方言
Spring Data JDBC 使用 Dialect
接口的实现来封装特定于数据库或其 JDBC 驱动程序的行为。默认情况下,AbstractJdbcConfiguration
会尝试通过获取连接并注册正确的 Dialect
从数据库配置中确定方言。您可以覆盖 AbstractJdbcConfiguration.jdbcDialect(NamedParameterJdbcOperations)
来自定义方言选择。
如果您使用的是没有对应方言的数据库,您的应用程序将无法启动。在这种情况下,您需要联系您的供应商以提供一个Dialect
实现。或者,您可以自己实现一个Dialect
。
方言由
|