入门
启动工作环境的一个简单方法是在 Spring Tools 中或从 Spring Initializr 创建一个基于 Spring 的项目。
首先,您需要设置一个正在运行的数据库服务器。请参阅您的供应商文档,了解如何配置数据库以进行 JDBC 访问。
要求
Spring Data JDBC 需要 Spring Framework 6.2.6 及以上版本。
在数据库方面,Spring Data JDBC 需要一个 方言(dialect) 来抽象特定于供应商的 SQL 功能。Spring Data JDBC 直接支持以下数据库:
-
DB2
-
H2
-
HSQLDB
-
MariaDB
-
Microsoft SQL Server
-
MySQL
-
Oracle
-
Postgres
如果您使用不同的数据库,您的应用程序将无法启动。 方言(dialect) 部分包含有关在这种情况下如何继续操作的更多详细信息。
Hello World
在 STS 中创建一个 Spring 项目
-
转到 File → New → Spring Template Project → Simple Spring Utility Project,并在提示时按 Yes。然后输入一个项目和包名,例如
org.spring.jdbc.example
。 -
将以下内容添加到
pom.xml
文件的dependencies
元素中<dependencies> <!-- other dependency elements omitted --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jdbc</artifactId> <version>3.4.5</version> </dependency> </dependencies>
-
更改 pom.xml 中的 Spring 版本为
<spring.version>6.2.6</spring.version>
-
将 Spring Milestone Maven 仓库的以下位置添加到您的
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,一旦依赖中包含 starter spring-boot-starter-data-jdbc
,一个 DataSource
就足够了。其余的一切都由 Spring Boot 完成。
在此设置中,有一些方面可能需要自定义。
方言
Spring Data JDBC 使用 Dialect
接口的实现来封装特定于数据库或其 JDBC 驱动程序的行为。默认情况下,AbstractJdbcConfiguration
尝试通过获取连接和注册正确的 Dialect
来从数据库配置中确定方言。您可以覆盖 AbstractJdbcConfiguration.jdbcDialect(NamedParameterJdbcOperations)
来自定义方言选择。
如果您使用的数据库没有可用的方言,您的应用程序将无法启动。在这种情况下,您将不得不要求您的供应商提供 Dialect
实现。或者,您可以实现自己的 Dialect
。
方言由
|