此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data Relational 3.4.0spring-doc.cn

开始

引导设置工作环境的一种简单方法是在 Spring Tools 中或从 Spring Initializr 创建基于 Spring 的项目。spring-doc.cn

首先,您需要设置一个正在运行的数据库服务器。 请参阅您的供应商文档,了解如何配置数据库以进行 JDBC 访问。spring-doc.cn

要求

Spring Data JDBC 需要 Spring Framework 6.1.15 及更高版本。spring-doc.cn

在数据库方面, Spring Data JDBC 需要一种方言来抽象常见的 SQL 功能,而不是供应商特定的风格。 Spring Data JDBC 包括对以下数据库的直接支持:spring-doc.cn

如果您使用其他数据库,则您的应用程序将无法启动。 方言部分包含有关如何在这种情况下进行的更多详细信息。spring-doc.cn

世界您好

要在 STS 中创建 Spring 项目,请执行以下操作:spring-doc.cn

  1. 转到 File → New → Spring Template Project → Simple Spring Utility Project,并在出现提示时按 Yes。 然后输入项目和包名称,例如 .org.spring.jdbc.examplespring-doc.cn

  2. 将以下内容添加到 files 元素中:pom.xmldependenciesspring-doc.cn

    <dependencies>
    
      <!-- other dependency elements omitted -->
    
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jdbc</artifactId>
        <version>3.3.7-SNAPSHOT</version>
      </dependency>
    
    </dependencies>
  3. 将 Spring 的 pom.xml 版本更改为spring-doc.cn

    <spring.version>6.1.15</spring.version>
  4. 将 Maven 的 Spring Milestone 存储库的以下位置添加到您的位置,使其与您的元素位于同一级别:pom.xml<dependencies/>spring-doc.cn

    <repositories>
      <repository>
        <id>spring-milestone</id>
        <name>Spring Maven MILESTONE Repository</name>
        <url>https://repo.spring.io/milestone</url>
      </repository>
    </repositories>

存储库也可以在此处浏览spring-doc.cn

Logging

Spring Data JDBC 本身几乎不做日志记录。 相反,发出 SQL 语句的机制提供了日志记录。 因此,如果你想检查运行了哪些 SQL 语句,请激活 Spring 的 NamedParameterJdbcTemplateMyBatis 的日志记录。JdbcTemplatespring-doc.cn

您可能还希望将日志记录级别设置为 view 一些其他信息。 为此,请编辑文件以包含以下内容:DEBUGapplication.propertiesspring-doc.cn

logging.level.org.springframework.jdbc=DEBUG

示例存储库

有一个 GitHub 存储库,其中包含几个示例,您可以下载并使用这些示例来了解该库的工作原理。spring-doc.cn

配置

Spring Data JDBC 存储库支持可以通过 Java 配置通过 Comments 激活,如下例所示:spring-doc.cn

使用 Java 配置的 Spring Data JDBC 存储库
@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 创建与数据库的连接。 这是以下两个 bean 方法所必需的。DataSource
4 创建 Spring Data JDBC 用于访问数据库的 。NamedParameterJdbcOperations
5 Spring Data JDBC 利用 Spring JDBC 提供的事务 Management。

前面示例中的配置类使用 API 设置嵌入式 HSQL 数据库。 然后使用 the 进行设置,并使用 . 最后,我们使用 . 如果未配置基本包,则使用配置类所在的包。 扩展 AbstractJdbcConfiguration 可以确保各种 bean 被注册。 覆盖其方法可用于自定义设置(见下文)。EmbeddedDatabaseBuilderspring-jdbcDataSourceNamedParameterJdbcOperationsTransactionManager@EnableJdbcRepositoriesspring-doc.cn

可以使用 Spring Boot 进一步简化此配置。 使用 Spring Boot,一旦 starter 包含在依赖项中,a 就足够了。 其他一切都由 Spring Boot 完成。DataSourcespring-boot-starter-data-jdbcspring-doc.cn

在此设置中,可能需要自定义一些内容。spring-doc.cn

方言

Spring Data JDBC 使用接口的实现来封装特定于数据库或其 JDBC 驱动程序的行为。 默认情况下, AbstractJdbcConfiguration 尝试通过获取连接并注册正确的 . 您可以覆盖以自定义方言选择。DialectDialectAbstractJdbcConfiguration.jdbcDialect(NamedParameterJdbcOperations)spring-doc.cn

如果您使用的数据库没有可用的方言,则您的应用程序将无法启动。 在这种情况下,您必须要求供应商提供实施。 或者,您也可以实施自己的 .DialectDialectspring-doc.cn

方言由 DialectResolver 从实例中解析,通常是通过检查 . + 你可以让 Spring 自动发现你的 JdbcDialect,方法是注册一个通过 . 使用 Spring 的 . 为此,请执行以下操作:JdbcOperationsConnection.getMetaData()org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProviderMETA-INF/spring.factoriesDialectResolverSpringFactoriesLoaderspring-doc.cn

  1. 实施您自己的 .Dialectspring-doc.cn

  2. 实现一个返回 .JdbcDialectProviderDialectspring-doc.cn

  3. 通过在 下创建资源来注册提供程序,然后通过添加一行来执行注册spring.factoriesMETA-INF
    org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=<fully qualified name of your JdbcDialectProvider>spring-doc.cn