Spring Data JDBC와 Spanner 통합(PostgreSQL)

대규모 Spring Data 계열의 일부인 Spring Data JDBC를 사용하면 애플리케이션에 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 드라이버를 기준으로 사용되는 데이터베이스 언어를 선택합니다. Spanner JDBC 드라이버가 사용될 때 Spring Data JDBC가 PostgreSQL 언어를 사용하도록 하려면 애플리케이션에 Spring 구성 클래스를 추가해야 합니다.

@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 JDBCSpanner 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>

데이터 소스 구성

Spanner JDBC 드라이버를 사용하고 Spanner PostgreSQL 언어 데이터베이스에 연결하도록 application.properties를 구성합니다.

# 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}

전체 샘플 애플리케이션

샘플 애플리케이션과 통합하려면 Spanner PostgreSQL을 사용하는 Spring Data JDBC 샘플 애플리케이션을 참조하세요.

다음 단계