

# JDBC 3.x 드라이버 시작하기
<a name="jdbc-v3-driver-getting-started"></a>

이 섹션의 정보를 사용하여 Amazon Athena JDBC 3.x 드라이버를 시작하세요.

**Topics**
+ [설치 지침](#jdbc-v3-driver-installation-instructions)
+ [드라이버 실행](#jdbc-v3-driver-running-the-driver)
+ [드라이버 구성](#jdbc-v3-driver-configuring-the-driver)
+ [Athena JDBC v2 드라이버에서 업그레이드](#jdbc-v3-driver-upgrading-from-the-athena-jdbc-v2-driver-to-v3)

## 설치 지침
<a name="jdbc-v3-driver-installation-instructions"></a>

사용자 지정 애플리케이션 또는 서드 파티 SQL 클라이언트에서 JDBC 3.x 드라이버를 사용할 수 있습니다.

### 사용자 지정 애플리케이션에서
<a name="jdbc-v3-driver-installation-in-a-custom-application"></a>

드라이버 jar 및 해당 종속 항목이 포함된 `.zip` 파일을 다운로드합니다. 종속 항목마다 고유한 `.jar` 파일이 있습니다. 사용자 지정 애플리케이션에서 드라이버 jar를 종속 항목으로 추가합니다. 다른 소스에서 애플리케이션에 드라이버 jar의 종속 항목을 이미 추가했는지 여부에 따라 해당 종속 항목을 선택적으로 추가합니다.

### 서드 파티 SQL 클라이언트에서
<a name="jdbc-v3-driver-installation-in-a-third-party-sql-client"></a>

드라이버 uber jar 파일을 다운로드하고 해당 클라이언트에 대한 지침에 따라 서드 파티 SQL 클라이언트에 추가합니다.

## 드라이버 실행
<a name="jdbc-v3-driver-running-the-driver"></a>

드라이버를 실행하려면 사용자 지정 애플리케이션이나 서드 파티 SQL 클라이언트를 사용합니다.

### 사용자 지정 애플리케이션에서
<a name="jdbc-v3-driver-running-in-a-custom-application"></a>

JDBC 인터페이스를 사용하여 프로그램에서 JDBC 드라이버와 상호 작용합니다. 다음 코드는 샘플 사용자 지정 Java 애플리케이션을 보여줍니다.

```
public static void main(String args[]) throws SQLException {
    Properties connectionParameters = new Properties();
    connectionParameters.setProperty("Workgroup", "primary");
    connectionParameters.setProperty("Region", "us-east-2");
    connectionParameters.setProperty("Catalog", "AwsDataCatalog");
    connectionParameters.setProperty("Database","sampledatabase");
    connectionParameters.setProperty("OutputLocation","s3://amzn-s3-demo-bucket");
    connectionParameters.setProperty("CredentialsProvider","DefaultChain");
    String url = "jdbc:athena://";
    AthenaDriver driver = new AthenaDriver();
    Connection connection = driver.connect(url, connectionParameters);
    Statement statement = connection.createStatement();
    String query = "SELECT * from sample_table LIMIT 10";
    ResultSet resultSet = statement.executeQuery(query);
    printResults(resultSet); // A custom-defined method for iterating over a
                             // result set and printing its contents
}
```

### 서드 파티 SQL 클라이언트에서
<a name="jdbc-v3-driver-running-in-a-third-party-sql-client"></a>

사용 중인 SQL 클라이언트에 대한 설명서를 따릅니다. 일반적으로 SQL 클라이언트의 그래픽 사용자 인터페이스를 사용하여 쿼리를 입력하고 제출하면 쿼리 결과가 동일한 인터페이스에 표시됩니다.

## 드라이버 구성
<a name="jdbc-v3-driver-configuring-the-driver"></a>

연결 파라미터를 사용하여 Amazon Athena JDBC 드라이버를 구성할 수 있습니다. 지원되는 연결 파라미터는 [Amazon Athena JDBC 3.x 연결 파라미터](jdbc-v3-driver-connection-parameters.md) 섹션을 참조하세요.

### 사용자 지정 애플리케이션에서
<a name="jdbc-v3-driver-configuring-in-a-custom-application"></a>

사용자 지정 애플리케이션에서 JDBC 드라이버의 연결 파라미터를 설정하려면 다음 중 하나를 수행합니다.
+ 파라미터 이름과 해당 값을 `Properties` 객체에 추가합니다. `Connection#connect`를 직접적으로 호출할 때 해당 객체를 URL과 함께 전달합니다. 예제는 [드라이버 실행](#jdbc-v3-driver-running-the-driver)의 샘플 Java 애플리케이션을 참조하세요.
+ 연결 문자열(URL)에서 다음 형식을 사용하여 프로토콜 접두사 바로 뒤에 파라미터 이름과 해당 값을 추가합니다.

  ```
  <parameterName>=<parameterValue>;
  ```

  다음 예제와 같이 각 파라미터 이름/파라미터 값 페어의 끝에 세미콜론을 사용하고 세미콜론 뒤에 공백을 남기지 않습니다.

  ```
  String url = "jdbc:athena://WorkGroup=primary;Region=us-east-1;...;";AthenaDriver driver = new AthenaDriver();Connection connection = driver.connect(url, null);
  ```
**참고**  
연결 문자열과 `Properties` 객체 모두에 파라미터가 지정된 경우 연결 문자열의 값이 우선합니다. 두 위치 모두에 동일한 파라미터를 지정하는 것은 권장되지 않습니다.
+ 다음 예제와 같이 파라미터 값을 `AthenaDataSource`의 메서드에 인수로 추가합니다.

  ```
  AthenaDataSource dataSource = new AthenaDataSource();
      dataSource.setWorkGroup("primary");
      dataSource.setRegion("us-east-2");
      ...
      Connection connection = dataSource.getConnection();
      ...
  ```

### 서드 파티 SQL 클라이언트에서
<a name="jdbc-v3-driver-configuring-in-a-third-party-sql-client"></a>

사용 중인 SQL 클라이언트의 지침을 따릅니다. 일반적으로 클라이언트는 파라미터 이름과 해당 값을 입력할 수 있는 그래픽 사용자 인터페이스를 제공합니다.

## Athena JDBC v2 드라이버에서 업그레이드
<a name="jdbc-v3-driver-upgrading-from-the-athena-jdbc-v2-driver-to-v3"></a>

대부분의 JDBC 버전 3 연결 파라미터는 이전 버전인 버전 2(Simba) JDBC 드라이버와 호환됩니다. 즉, 버전 2 연결 문자열을 드라이버 버전 3에서 재사용할 수 있습니다. 그러나 일부 연결 파라미터가 변경되었습니다. 이러한 변경 사항은 여기에서 설명합니다. 버전 3 JDBC 드라이버로 업그레이드할 때 필요한 경우 기존 구성을 업데이트하세요.

### 드라이버 클래스
<a name="jdbc-v3-driver-upgrading-driver-class"></a>

일부 BI 도구는 JDBC 드라이버 `.jar` 파일에서 드라이버 클래스를 제공하도록 요청합니다. 대부분의 도구는 이 클래스를 자동으로 찾습니다. 버전 3 드라이버에서 클래스의 정규화된 이름은 `com.amazon.athena.jdbc.AthenaDriver`입니다. 버전 2 드라이버에서 클래스는 `com.simba.athena.jdbc.Driver`였습니다.

### 연결 문자열
<a name="jdbc-v3-driver-upgrading-connection-string"></a>

버전 3 드라이버는 JDBC 연결 문자열 URL 시작 부분의 프로토콜에 `jdbc:athena://`를 사용합니다. 버전 3 드라이버는 버전 2 프로토콜 `jdbc:awsathena://`도 지원하지만 버전 2 프로토콜은 더 이상 사용되지 않습니다. 정의되지 않은 동작을 방지하기 위해 버전 3에서는 버전 2(또는 `jdbc:awsathena://`로 시작하는 연결 문자열을 허용하는 다른 드라이버)가 [DriverManager](https://docs.oracle.com/javase/8/docs/api/java/sql/DriverManager.html) 클래스에 등록된 경우 `jdbc:awsathena://`로 시작하는 연결 문자열을 허용하지 않습니다.

### 보안 인증 제공업체
<a name="jdbc-v3-driver-upgrading-credentials-providers"></a>

버전 2 드라이버는 정규화된 이름(예: `com.simba.athena.amazonaws.auth.DefaultAWSCredentialsProviderChain`)을 사용하여 서로 다른 보안 인증 제공업체를 식별합니다. 버전 3 드라이버는 더 짧은 이름(예: `DefaultChain`)을 사용합니다. 새 이름은 각 보안 인증 제공업체의 해당 섹션에 설명되어 있습니다.

새로운 AWS SDK for Java의 [AwsCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/AwsCredentialsProvider.html) 인터페이스를 지난 AWS SDK for Java의 [AWSCredentialsProvider](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWSCredentialsProvider.html) 인터페이스 대신 구현하려면 버전 2 드라이버용으로 작성된 사용자 지정 보안 인증 제공업체를 버전 3 드라이버용으로 수정해야 합니다.

`PropertiesFileCredentialsProvider`는 JDBC 3.x 드라이버에서 지원되지 않습니다. 이 공급자는 JDBC 2.x 드라이버에서 사용되었지만 지원이 거의 종료되어가는 이전 버전의 Java용 AWS SDK에 속합니다. JDBC 3.x 드라이버에서 동일한 기능을 사용하려면 [AWS 구성 프로파일 보안 인증](jdbc-v3-driver-aws-configuration-profile-credentials.md) 공급자를 대신 사용하세요.

### 로그 수준
<a name="jdbc-v3-driver-upgrading-log-level"></a>

다음 표에서는 JDBC 버전 2 드라이버와 버전 3 드라이버의 `LogLevel` 파라미터 차이점을 보여줍니다.


****  

| JDBC 드라이버 버전 | 파라미터 이름 | 파라미터 유형 | 기본값  | 가능한 값 | 연결 문자열 예제 | 
| --- | --- | --- | --- | --- | --- | 
|  v2 | LogLevel | 선택 사항 | 0 | 0\$16 | LogLevel=6; | 
| v3 | LogLevel | 선택 사항 | TRACE | OFF, ERROR, WARN, INFO, DEBUG, TRACE | LogLevel=INFO; | 

### 쿼리 ID 검색
<a name="jdbc-v3-driver-upgrading-query-id-retrieval"></a>

버전 2 드라이버에서는 `#getPReparedQueryId`와 `#getQueryId`라는 두 가지 메서드가 있는 인터페이스인 `com.interfaces.core.IStatementQueryInfoProvider`에 대해 `Statement` 인스턴스를 언래핑합니다. 이러한 메서드를 사용하여 실행된 쿼리의 쿼리 실행 ID를 얻을 수 있습니다.

버전 3 드라이버에서 `com.amazon.athena.jdbc.AthenaResultSet` 인터페이스에 대한 `Statement`, `PreparedStatement` 및 `ResultSet` 인스턴스를 언래핑합니다. 인터페이스에는 `#getQueryExecutionId`라는 하나의 메서드가 있습니다.