기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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; } }