入门
一种轻松引导设置工作环境的方法是在Spring Tools或Spring Initializr中创建一个基于Spring的项目。
首先,您需要设置一个正在运行的数据库服务器。请参考您的供应商文档,了解如何为 JDBC 访问配置您的数据库。
需求
Spring Data JDBC 要求 Spring Framework 6.2.0 及更高版本。
在数据库方面,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
元素中。<dependencies> <!-- other dependency elements omitted --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jdbc</artifactId> <version>3.4.0</version> </dependency> </dependencies>
-
将 pom.xml 中 Spring 的版本更改为:
<spring.version>6.2.0</spring.version>
-
将 Spring 里程碑存储库的以下位置添加到您的
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
。
方言由
|