이 문서에서는 Spanner JDBC 드라이버를 사용하여 Java 애플리케이션을 Spanner Omni에 연결하고 SQL 문을 실행하는 방법을 보여줍니다.
Java Database Connectivity (JDBC)는 애플리케이션이 관계형 데이터베이스와 일관된 방식으로 상호작용할 수 있도록 지원하는 표준 Java API입니다. Spanner JDBC 드라이버는 Spanner에서 작동하는 방식과 동일한 방식으로 Spanner Omni와 함께 작동합니다.
JDBC 드라이버를 사용하면 Spanner Omni에서 표준 JDBC 호환 도구와 라이브러리를 활용할 수 있습니다.
Spanner Omni JDBC 연결은 일반 텍스트, TLS, mTLS의 세 가지 보안 모드를 지원합니다.
자세한 내용은 Spanner 문서의 JDBC에서 Spanner 시작하기를 참고하세요.
연결 URL 고려사항
Spanner Omni는Google Cloud 프로젝트에 직접 연결되지 않으므로 JDBC 연결 URL에 projects/name 구성요소가 필요하지 않습니다. 마찬가지로 각 Spanner Omni 배포에는 이미 생성된 단일 인스턴스(instances/default)가 있으므로 instances/name 구성요소는 선택사항입니다.
Spanner Omni 연결 설정
다음 예에서는 지원되는 각 보안 모드에 대해 Spanner JDBC 드라이버를 사용하여 Spanner Omni와 연결하는 방법을 보여줍니다.
일반 텍스트 통신
일반 텍스트 통신을 설정하려면 다음과 유사한 연결 URL을 사용하세요.
String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;usePlainText=true;isExperimentalHost=true";
try {
java.sql.Connection connection = DriverManager.getConnection(url);
try {
ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM Singers");
while (rs.next()) {
System.out.print(rs.getLong(1) + "\t");
System.out.println(rs.getString(2));
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
Spanner Omni 엔드포인트에 TLS 또는 mTLS와 함께 인증 토큰을 사용하는 경우 SPANNER_EXPERIMENTAL_HOST_AUTH_TOKEN 환경 변수를 Spanner Omni CLI에서 생성된 인증 토큰의 경로로 설정합니다. 사용자 인증 정보가 필요하지 않은 연결의 경우 이 변수를 설정하지 않은 상태로 둡니다.
인증 토큰은 Spanner Omni에서 생성된 토큰이 만료되고 Spanner Omni CLI를 사용하여 수동으로 갱신해야 하므로 클라이언트에서 사용하는 것이 권장되지 않습니다.
TLS 연결
TLS 연결을 설정하려면 Java SDK TLS 안내에 설명된 대로 Java 트러스트 저장소에 CA 인증서를 추가하거나 애플리케이션을 실행할 때 직접 전달하세요. TLS 연결을 설정하는 동안 JDBC URL에는 추가 매개변수가 필요하지 않습니다.
String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID?isExperimentalHost=true";
mTLS 연결
mTLS 연결을 설정하려면 JDBC URL에 clientCertificate 및 clientKey이라는 두 가지 매개변수가 추가로 필요합니다. 이러한 매개변수는 각각 클라이언트 인증서와 클라이언트 비공개 키의 파일 경로를 지정해야 합니다. 클라이언트 비공개 키는 Java SDK mTLS 안내에 언급된 대로 Java 호환 형식이어야 합니다.
String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;clientCertificate=PATH_TO_CLIENT_CERT;clientKey=PATH_TO_CLIENT_KEY;isExperimentalHost=true";