Docs Menu
Docs Home
/ / /
Java 동기화

드라이버 버전 업그레이드

이 페이지의 내용

  • 개요
  • 주요 변경 사항
  • 서버 릴리스 호환성 변경 사항

이 섹션에서는 드라이버를 새 버전으로 업그레이드하기 위해 애플리케이션에 적용해야 하는 변경 사항을 확인할 수 있습니다.

업그레이드하기 전에 다음 작업을 수행하세요:

  • 새 버전이 애플리케이션이 연결되는 MongoDB Server 버전 및 애플리케이션이 실행되는 Java 런타임 환경(JRE)과 호환되는지 확인하세요. 이 정보는 Java 호환성 페이지를 참조하세요.

  • 애플리케이션에서 사용 중인 드라이버의 현재 버전과 업그레이드 예정 버전 간의 호환성이 손상되는 변경은 호환성이 손상되는 변경 섹션에서 확인하세요. MongoDB Server 릴리스 호환성 변경 사항에 대해 자세히 알아보려면 MongoDB Server 릴리스 호환성 변경 사항 섹션을 참조하세요.

향후 드라이버 버전을 업그레이드할 때 애플리케이션에 필요한 변경 사항을 최소화하려면 Stable API를 사용하세요.

주요 변경 사항(breaking change)이란 특정 버전의 드라이버에 적용되는 규칙이나 동작의 수정으로, 업그레이드 전에 해결하지 않으면 이 애플리케이션제대로 작동하지 않을 수 있습니다.

이 섹션의 주요 변경 사항은 이를 도입한 드라이버 버전별로 분류됩니다. 드라이버 버전을 업그레이드할 때 현재 버전과 업그레이드 버전 간의 주요 변경 사항을 모두 해소합니다. 예를 들어 드라이버를 v4.0에서 v4.5로 업그레이드하는 경우, v4.5에 나열된 변경 사항을 포함하여 v4.0 이후 버전의 모든 주요 변경 사항을 해소해야 합니다.

  • 드라이버는 MongoDB Server 버전 v3.4 및 이전 버전에 대한 연결지원을 종료합니다. 변경 사항에 대해 자세히 알아보려면 버전 4.8 서버 릴리스 지원 변경 섹션을 참조하세요.

  • 애플리케이션이 OSGi 컨테이너에 드라이버를 배포하고 Java 레코드의 인코딩 및 디코딩을 위해 드라이버를 사용하는 경우 org.bson.codecs.record 모듈에 대한 명시적 종속성을 추가해야 합니다.

  • v4.6에서 구현된 RecordCodec은 레코드의 List 또는 Map 필드의 유형 매개 변수로 지정된 POJO 및 레코드 클래스를 해당 클래스 대신 Document 값으로 역직렬화했습니다. 이 버전에서는 이제 적절한 레코드 및 POJO 유형으로 역직렬화합니다.

    예를 들어, 다음 레코드 클래스 정의는 Chapter 유형 매개 변수를 받는 List가 포함된 Book 레코드를 보여줍니다.

    public record Book(String title, List<Chapter> chapters) {}
    public record Chapter(Integer number, String text) {}

    이 버전부터 코덱은 List의 데이터를 Document 값 대신 Chapter 레코드 클래스로 역직렬화합니다.

  • setWindowFields 빌더 API는 더 이상 베타 버전이 아닙니다. 새 빌더는 바이너리 및 소스 호환성을 손상시킵니다. Aggregates API 문서에서 새로운 setWindowFields() 메서드 시그니처 정보를 확인하세요.

    애플리케이션이 v4.7 이전 버전에서 이 빌더를 사용하는 경우 새 메서드 서명을 사용하도록 소스 코드를 업데이트하고 바이너리를 다시 빌드하세요.

  • 다양한 버전의 드라이버에서 직렬화 호환성 문제를 최소화하는 새 형식을 사용하도록 ObjectId 클래스와 해당 serialVersionUID 필드가 업데이트됐습니다.

    이 버전 이상의 드라이버를 사용하는 애플리케이션에서 ObjectId가 포함되어 있고 이전 버전의 드라이버에서 직렬화된 객체에 대해 Java 객체 직렬화를 수행하려고 하면 Java에서 InvalidClassException을 발생시킵니다.

    Java 객체 직렬화에 대해 자세히 알아보려면 직렬화 가능한 객체에 대한 Java 문서를 참조하세요.

  • 3.12 릴리스에서 더 이상 사용되지 않는 것으로 표시된 여러 클래스와 메서드가 이 버전에서 제거됐습니다.

  • 삽입 헬퍼 메서드는 void 대신 삽입 결과 객체를 반환합니다.

  • BsonDocument, DocumentDbObjecttoJson() 메소드는 엄격한(strict) JSON 형식 대신 완화된(relaxed) JSON 형식을 반환합니다. 이렇게 하면 JSON 문서의 가독성이 높아지지만 32비트와 64비트 정수의 차이와 같이 BSON 유형 정보를 식별하기가 더 어려워질 수 있습니다. 애플리케이션이 엄격한 JSON 형식을 사용하는 경우 데이터를 읽거나 쓸 때 엄격(strict) 모드를 사용하세요. 문서 데이터 형식: 확장 JSON 가이드를 참조해 현재 API에서 JSON 형식을 지정하는 방법을 알아보세요.

  • java.util.UUID 값의 기본 BSON 표현이 JAVA_LEGACY에서 UNSPECIFIED로 변경되었습니다. UUID 값을 저장하거나 검색하는 애플리케이션은 사용할 표현을 명시적으로 지정해야 합니다. MongoClientSettingsuuidRepresentation 속성에서 표현을 지정할 수 있습니다.

    지정하는 UUID 표현은 드라이버가 UUID를 디코딩하는 방법을 엄격하게 제어합니다. 이전 버전의 드라이버에서는 JAVA_LEGACY 표현을 지정한 경우 드라이버가 하위 유형 3 및 4의 바이너리 객체를 UUID로 디코딩했습니다. 버전 4.0에서 JAVA_LEGACY 표현은 하위 유형 3에서만 작동합니다.

    UuidRepresentation 열거형 노드 목록은 v4.0 API 문서를 참조하세요.

  • 연결 풀은 더 이상 MongoDB에 연결해야 하는 대기 큐 스레드 또는 비동기 작업의 수를 제한하지 않습니다. 애플리케이션은 드라이버에 의존하여 MongoWaitQueueFullException을 발생시키는 대신 필요에 따라 요청을 제한해야 합니다.

  • 드라이버는 더 이상 java.util.logging(JUL) 패키지를 사용하여 로깅하지 않으며 SLF4J 로깅 프레임워크만 지원합니다.

  • 내장된 드라이버와 Android 드라이버가 제거되었습니다. 애플리케이션에서 이러한 드라이버를 사용하는 경우 3.x Java 드라이버 버전을 계속 사용해야 합니다.

  • Uber JAR인 mongo-java-drivermongodb-driver는 더 이상 출시되지 않습니다. 애플리케이션이 이들 중 하나를 사용하는 경우 애플리케이션에서 사용하는 API에 따라 mongodb-driver-sync 또는 mongodb-driver-legacy 중 하나로 전환해야 합니다. 종속 항목에서 uber JAR을 제거해야 합니다.

  • 여러 클래스를 업데이트하면서 삽입 헬퍼 메서드에 대한 메서드 시그니처 변경과 같은 이진 호환성 문제가 발생했습니다. 이 버전 이상에 대해 드라이버에 연결되는 모든 클래스를 다시 컴파일하여 계속 작동하는지 확인하세요.

서버 릴리스 호환성 변경은 일련의 MongoDB Server 버전에 대한 지원을 중단하는 MongoDB Java 드라이버의 수정 사항입니다.

드라이버는 MongoDB 서버 버전이 수명 종료(EOL) 시점에 도달하면 해당 버전에 대한 지원을 중단합니다.

EOL 제품에 대한 MongoDB 지원에 대해 자세히 알아보려면 레거시 지원 정책을 참조하세요.

  • v4.8 드라이버는 MongoDB Server v3.4 및 이전 버전에 대한 지원을 중단합니다. v4.8 드라이버를 사용하려면 MongoDB Server는 v3.6 및 이후 버전이어야 합니다. MongoDB Server 배포를 업그레이드하는 방법을 알아보려면 MongoDB Server 매뉴얼의 릴리스 노트를 참조합니다.

돌아가기

호환성