开始

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

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

要求

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

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

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

世界您好

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

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

  2. 将以下内容添加到pom.xml文件dependencies元素:spring-doc.cadn.net.cn

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

    <spring.version>6.2.0</spring.version>
  4. 将 Maven 的 Spring Milestone 存储库的以下位置添加到您的pom.xml使其与您的<dependencies/>元素:spring-doc.cadn.net.cn

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

Logging

Spring Data JDBC 本身几乎不做日志记录。 相反,的JdbcTemplate要发出 SQL 语句,请提供日志记录。 因此,如果要检查正在运行的 SQL 语句,请为 Spring 的NamedParameterJdbcTemplateMyBatisspring-doc.cadn.net.cn

您可能还需要将日志记录级别设置为DEBUG以查看一些其他信息。 为此,请编辑application.propertiesfile 中包含以下内容:spring-doc.cadn.net.cn

logging.level.org.springframework.jdbc=DEBUG

示例存储库

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

配置

Spring Data JDBC 存储库支持可以通过 Java 配置通过 Comments 激活,如下例所示:spring-doc.cadn.net.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 创建一个DataSource连接到数据库。 这是以下两个 bean 方法所必需的。
4 创建NamedParameterJdbcOperations由 Spring Data JDBC 用于访问数据库。
5 Spring Data JDBC 利用 Spring JDBC 提供的事务 Management。

前面示例中的配置类使用EmbeddedDatabaseBuilderAPI 的spring-jdbc. 这DataSource然后用于设置NamedParameterJdbcOperations以及TransactionManager. 我们最终使用@EnableJdbcRepositories. 如果未配置基本包,则使用配置类所在的包。 扩展AbstractJdbcConfiguration确保注册各种 bean。 覆盖其方法可用于自定义设置(见下文)。spring-doc.cadn.net.cn

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

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

方言

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

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

方言的解析方式为DialectResolverJdbcOperations实例,通常通过检查Connection.getMetaData(). + 您可以让 Spring 自动发现您的JdbcDialect通过注册一个实现org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider通过META-INF/spring.factories.DialectResolver使用 Spring 的SpringFactoriesLoader. 为此,请执行以下作:spring-doc.cadn.net.cn

  1. 实施您自己的Dialect.spring-doc.cadn.net.cn

  2. 实施JdbcDialectProvider返回Dialect.spring-doc.cadn.net.cn

  3. 通过创建spring.factoriesresource 下的META-INF并通过添加一行来执行注册
    org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=<fully qualified name of your JdbcDialectProvider>spring-doc.cadn.net.cn


APP信息