Spring Data JDBC 是较大 Spring Data 家族的一部分,可让您更轻松地在应用中实现基于 JDBC 的仓库。Spring Data JDBC 支持 PostgreSQL 和 其他数据库系统它会在应用和数据库之间添加一个抽象层,以便应用更轻松地从一个数据库系统移植到另一个数据库系统。
为 Spanner PostgreSQL 方言数据库设置 Spring Data JDBC
您可以将 Spanner PostgreSQL 方言数据库与 Spring Data JDBC 集成 使用 Spring Data JDBC 和 Spanner 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 驱动程序。