Spring Data JDBC 是更大 Spring Data 系列的一部分,可让您更轻松地在应用中实现基于 JDBC 的仓库。它在应用和数据库之间添加了一个抽象层,使应用更容易从一个数据库系统移植到另一个数据库系统。
为 Spanner GoogleSQL 方言数据库设置 Spring Data JDBC
您可以通过向应用添加适用于 Spanner GoogleSQL 的方言,将 Spanner GoogleSQL 方言数据库与 Spring Data JDBC 集成。
方言配置
Spring Data JDBC 会根据在 Spring Data 中配置为数据源的 JDBC 驱动程序选择所使用的数据库方言。您必须向应用添加额外的方言提供程序,以便在使用 Spanner JDBC 驱动程序时指示 Spring Data JDBC 使用 GoogleSQL 方言:
public class SpannerDialectProvider implements DialectResolver.JdbcDialectProvider {
@Override
public Optional<Dialect> getDialect(JdbcOperations operations) {
return Optional.ofNullable(
operations.execute((ConnectionCallback<Dialect>) SpannerDialectProvider::getDialect));
}
@Nullable
private static Dialect getDialect(Connection connection) throws SQLException {
DatabaseMetaData metaData = connection.getMetaData();
String name = metaData.getDatabaseProductName().toLowerCase(Locale.ENGLISH);
if (name.contains("spanner")) {
return SpannerDialect.INSTANCE;
}
return null;
}
}
此方言提供程序必须添加到应用中的 spring.factories
文件中:
org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=org.springframework.data.jdbc.repository.config.DialectResolver.DefaultDialectProvider,com.google.cloud.spanner.sample.SpannerDialectProvider
如需查看示例,请参阅 GitHub 上的完整可运行示例应用。
依赖项
在项目中,添加 Spring Data JDBC 和 Spanner JDBC 驱动程序的 Apache Maven 依赖项。
<dependencies>
<!-- Spring Data JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- Spanner JDBC driver -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner-jdbc</artifactId>
</dependency>
<dependencies>
数据源配置
将 application.properties
配置为使用 Spanner JDBC 驱动程序,并连接到 Spanner GoogleSQL 方言数据库。
spanner.project=my-project
spanner.instance=my-instance
spanner.database=spring-data-jdbc
spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver
spring.datasource.url=jdbc:cloudspanner:/projects/${spanner.project}/instances/${spanner.instance}/databases/${spanner.database}
完整示例应用
如需尝试将此集成与示例应用搭配使用,请参阅使用 Spanner GoogleSQL 的 Spring Data JDBC 示例应用。
后续步骤
- 详细了解 Spring Data JDBC。
- 提交 GitHub 问题以报告 bug 或提出有关 Spanner JDBC 驱动程序的问题。