Spanner와 Spring Data JDBC와 통합(GoogleSQL)

대규모 Spring Data 계열의 일부인 Spring Data JDBC를 사용하면 애플리케이션에서 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 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 GoogleSQL 언어 데이터베이스에 연결하도록 application.properties를 구성합니다.

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 샘플 애플리케이션을 참조하세요.

다음 단계