JDBC 드라이버 3.x에서 JDBC 드라이버 4.x로 마이그레이션하기

JDBC 드라이버 4.x는 JDBC 드라이버 3.x에 비해 몇 가지 새로운 기능과 개선 사항을 도입했습니다. 이 항목에서는 공개 API 변경 사항과 새로운 기능에 대한 개요 및 JDBC 드라이버 3.x에서 JDBC 드라이버 4.x로 마이그레이션하는 방법에 대한 정보도 제공합니다.

공개 API 개요

Snowflake JDBC 드라이버 공개 API는 net.snowflake.client.api 패키지(`API 참조<https://docs.snowflake.com/developer-guide/jdbc/reference/java/v4.0/index.html>`_ 참조)에 있습니다. JDBC 드라이버 3.x 및 JDBC 드라이버 4.x 간의 공개 API에 대한 변경 사항은 다음 테이블에 나열되어 있습니다.

패키지

설명

`api.driver<https://staging.docs.snowflake.com/developer-guide/jdbc/reference/java/v4.0/net/snowflake/client/api/driver/package-summary.html>`_

JDBC 드라이버 등록 및 진입점

`api.connection<https://staging.docs.snowflake.com/developer-guide/jdbc/reference/java/v4.0/net/snowflake/client/api/connection/package-summary.html>`_

Snowflake 관련 연결 및 데이터베이스 메타데이터 인터페이스, 스트림 전송 구성

`api.datasource<https://staging.docs.snowflake.com/developer-guide/jdbc/reference/java/v4.0/net/snowflake/client/api/datasource/package-summary.html>`_

연결 생성 및 관리를 위한 DataSource 구현

`api.pooling<https://staging.docs.snowflake.com/developer-guide/jdbc/reference/java/v4.0/net/snowflake/client/api/pooling/package-summary.html>`_

풀링된 연결이 필요한 애플리케이션을 위한 연결 풀 데이터 소스

`api.resultset<https://staging.docs.snowflake.com/developer-guide/jdbc/reference/java/v4.0/net/snowflake/client/api/resultset/package-summary.html>`_

결과 세트 인터페이스, 필드 메타데이터, Snowflake 데이터 타입, 비동기 쿼리 상태

`api.auth<https://staging.docs.snowflake.com/developer-guide/jdbc/reference/java/v4.0/net/snowflake/client/api/auth/package-summary.html>`_

인증 방법 정의

`api.loader<https://staging.docs.snowflake.com/developer-guide/jdbc/reference/java/v4.0/net/snowflake/client/api/loader/package-summary.html>`_

진행률 콜백을 사용한 대량 수집용 대량 데이터 로딩 API

또한, 드라이버는 공개 API의 일부가 아닌 net.snowflake.client.internal 패키지에 클래스를 포함합니다. 이러한 클래스는 드라이버에서 내부적으로 사용되며 애플리케이션 개발자가 사용할 수 없습니다. 내부 APIs 사용에 따른 위험은 사용자가 감수해야 합니다. 이는 이전 버전과의 호환성을 보장하지 않고 사전 고지 없이 변경될 수 있습니다.

JDBC 드라이버 3.x에서 JDBC 드라이버 4.x로의 코드 변경 사항

드라이버 클래스 이름 변경 사항

드라이버 클래스 이름이 변경되었습니다.

이전(3.x)

이후(4.x)

com.snowflake.client.jdbc.SnowflakeDriver

net.snowflake.client.api.driver.SnowflakeDriver

데이터 소스 생성 변경 사항

이제 SnowflakeDataSource 및 :codenowrap:`SnowflakeConnectionPoolDataSource`가 인터페이스입니다. 직접 인스턴스화하는 대신 팩토리 클래스를 사용합니다.

구성 요소

팩토리 메서드

SnowflakeDataSource

SnowflakeDataSourceFactory.createDataSource()

SnowflakeConnectionPoolDataSource

SnowflakeConnectionPoolDataSourceFactory.createConnectionPoolDataSource()

인증 유형 변경 사항

인증 유형이 :codenowrap:`SNOWFLAKE`에서 :codenowrap:`SNOWFLAKE_JDBC`로 변경되었습니다.

이전(3.x)

이후(4.x)

externalbrowser

EXTERNAL_BROWSER

다른 인증 유형에는 다음이 포함됩니다.

  • SNOWFLAKE

  • OKTA

  • EXTERNAL_BROWSER

  • OAUTH

  • SNOWFLAKE_JWT

  • ID_TOKEN

  • USERNAME_PASSWORD_MFA

  • OAUTH_AUTHORIZATION_CODE

  • OAUTH_CLIENT_CREDENTIALS

  • PROGRAMMATIC_ACCESS_TOKEN

  • WORKLOAD_IDENTITY

스트림 업로드 및 다운로드 변경 사항

SnowflakeConnection 인터페이스에서 스트림 작업을 위한 오버로드가 간소화되었습니다.

  • 업로드:

    • uploadStream(stageName, destFileName, inputStream)

    • uploadStream(stageName, destFileName, inputStream, UploadStreamConfig)

    • UploadStreamConfig options: destPrefix, compressData`(기본값: :codenowrap:`true)

  • 다운로드:

    • downloadStream(stageName, sourceFileName)

    • downloadStream(stageName, sourceFileName, DownloadStreamConfig)

    • DownloadStreamConfig 옵션: decompress`(기본값: :codenowrap:`false)

SnowflakeType 변경 사항

SnowflakeType 열거형이 제거되었습니다. 유형 값은 동일하게 유지되지만 열거형은 더 이상 지원되지 않습니다.

QueryStatusSnowflakeAsyncResultSet 변경 사항

버전 4.0.0에서는 쿼리 및 결과 세트와 관련하여 다음과 같이 변경되었습니다.

  • QueryStatus 열거형이 DTO(이전의 : codenowrap:QueryStatusV2)로 대체되었습니다. 동일한 데이터를 전달하지만 스레드로부터 안전한 방식으로 전달합니다. 쿼리 상태를 검색하려면 결과 세트를 :codenowrap:`SnowflakeAsyncResultSet`로 래핑 해제하고 :codenowrap:`getStatus`를 호출합니다.

  • 결과 세트의 :codenowrap:`getQueryErrorMessage`는 제거되지만 :codenowrap:`QueryStatus`의 :codenowrap:`getErrorMessage`에서 직접 검색할 수 있습니다.

상태를 나타내는 열거형 값이 필요한 경우 :codenowrap:`QueryStatus`에서 :codenowrap:`getStatus`를 호출합니다.