|
对于最新的稳定版本,请使用 Spring Data Relational 4.0.4! |
快速开始
一种快速搭建工作环境的简便方法是在Spring Tools中创建一个基于 Spring 的项目,或通过Spring Initializr创建。
首先,您需要设置一个正在运行的数据库服务器。 请参阅您的数据库厂商文档,了解如何为 JDBC 访问配置数据库。
要求
Spring Data JDBC 需要 Spring Framework 6.2.17 及以上版本。
就数据库而言,Spring Data JDBC 需要一个方言(dialect),以在特定厂商的 SQL 方言之上抽象出通用的 SQL 功能。 Spring Data JDBC 直接支持以下数据库:
-
DB2
-
H2
-
HSQLDB
-
MariaDB
-
Microsoft SQL Server
-
MySQL
-
Oracle
-
PostgreSQL
如果你使用了不同的数据库,那么你的应用程序将无法启动。 方言部分包含了在此类情况下如何操作的更多详细信息。
你好,世界
在 STS 中创建一个 Spring 项目:
-
转到 文件(File)→ 新建(New)→ Spring 模板项目(Spring Template Project)→ 简单 Spring 工具项目(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.5.10</version> </dependency> </dependencies> -
将 pom.xml 中 Spring 的版本更改为
<spring.version>6.2.17</spring.version> -
在您的
pom.xml文件中添加以下 Spring Milestone 仓库的地址(用于 Maven),使其与<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,此配置可以进一步简化。
在依赖中引入 starter DataSource 后,只需提供一个 spring-boot-starter-data-jdbc 即可。
其余所有工作均由 Spring Boot 自动完成。
在这个设置中,有一些内容可能需要自定义。
方言
Spring Data JDBC 使用接口 Dialect 的实现来封装特定于数据库或其 JDBC 驱动的行为。
默认情况下,AbstractJdbcConfiguration 会通过获取连接并注册正确的 Dialect,尝试从数据库配置中确定方言。
您可以覆盖 AbstractJdbcConfiguration.jdbcDialect(NamedParameterJdbcOperations) 来自定义方言选择。
如果你使用的数据库没有可用的方言(dialect),那么你的应用程序将无法启动。
在这种情况下,你需要联系你的数据库提供商,要求他们提供一个 Dialect 实现。
或者,你也可以自己实现一个 Dialect。
|
方言通过以下方式解析:
|