Java용 SDK 버전 1과 버전 2의 문자열 처리 차이점 - AWS SDK for Java 2.x

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Java용 SDK 버전 1과 버전 2의 문자열 처리 차이점

V1과 V2는 DynamoDB로 데이터를 전송할 때 빈 문자열을 다르게 처리합니다.

  • V1: DynamoDB로 전송하기 전에 빈 문자열을 null 값으로 변환합니다(속성 없음).

  • V2: 빈 문자열을 DynamoDB에 실제 빈 문자열 값으로 전송합니다.

중요

V2로 마이그레이션한 후 DynamoDB에 빈 문자열을 저장하지 않으려면 사용자 지정 변환기를 구현해야 합니다. 사용자 지정 변환기가 없으면 V2는 빈 문자열을 DynamoDB 항목에 실제 빈 문자열 속성으로 저장합니다. 이는 이러한 속성을 완전히 생략하는 V1의 동작과 다릅니다.

예 빈 문자열 속성을 null로 변환하는 V2용 사용자 지정 변환기
/** * Custom converter that maintains V1 behavior by converting empty strings to null values * when writing to DynamoDB, ensuring compatibility with existing data. No attribute will be saved to DynamoDB. */ public class NullifyEmptyStringConverter implements AttributeConverter<String> { @Override public AttributeValue transformFrom(String value) { if (value == null || value.isEmpty()) { return AttributeValue.builder().nul(true).build(); } return AttributeValue.builder().s(value).build(); } @Override public String transformTo(AttributeValue attributeValue) { if (attributeValue.nul()) { return null; } return attributeValue.s(); } @Override public EnhancedType<String> type() { return EnhancedType.of(String.class); } @Override public AttributeValueType attributeValueType() { return AttributeValueType.S; } } // V2 usage: @DynamoDbBean public class Customer { private String name; @DynamoDbConvertedBy(NullifyEmptyStringConverter.class) public String getName() { return name; } }