Spring Data JDBC 是较大的 Spring Data 家族的一部分,可让您更轻松地在应用中实现基于 JDBC 的仓库。Spring Data JDBC 支持 PostgreSQL 和其他数据库系统。它会在应用和数据库之间添加一个抽象层,以便应用更轻松地从一个数据库系统移植到另一个数据库系统。
为 Spanner PostgreSQL 方言数据库设置 Spring Data JDBC
您可以使用 Spring Data JDBC 和 Spanner JDBC 驱动程序附带的标准 PostgreSQL 方言,将 Spanner PostgreSQL 方言数据库与 Spring Data JDBC 集成。
您无需使用 PGAdapter 即可进行此集成。
方言配置
Spring Data JDBC 会根据在 Spring Data 中配置为数据源的 JDBC 驱动程序选择要使用的方言。您必须向应用添加一个额外的 Spring 配置类,以便在使用 Spanner JDBC 驱动程序时指示 Spring Data JDBC 使用 PostgreSQL 方言:
@Configuration
public class JdbcConfiguration extends AbstractJdbcConfiguration {
/** Override the dialect auto-detection, so it also returns PostgreSQL for Spanner. */
@Override
public Dialect jdbcDialect(@Nonnull NamedParameterJdbcOperations operations) {
if (isCloudSpannerPG(operations.getJdbcOperations())) {
return PostgresDialect.INSTANCE;
}
return super.jdbcDialect(operations);
}
/** Returns true if the current database is a Spanner PostgreSQL-dialect database. */
public static boolean isCloudSpannerPG(JdbcOperations operations) {
return Boolean.TRUE.equals(
operations.execute(
(ConnectionCallback<Boolean>)
connection ->
connection.isWrapperFor(CloudSpannerJdbcConnection.class)
&& com.google.cloud.spanner.Dialect.POSTGRESQL.equals(
connection.unwrap(CloudSpannerJdbcConnection.class).getDialect())));
}
}
如需查看示例,请参阅 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 PostgreSQL 方言数据库。
# This profile uses a Spanner PostgreSQL database.
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}
完整示例应用
如需尝试将此集成与示例应用搭配使用,请参阅 Spring Data JDBC 示例应用与 Spanner PostgreSQL。
后续步骤
- 详细了解 Spring Data JDBC。
- 提交 GitHub 问题以报告 bug 或提出有关 Spanner JDBC 驱动程序的问题。