DynamoDBMapper의 구성 설정(선택 사항)
DynamoDBMapper
의 인스턴스를 생성할 때는 일정한 기본 동작이 있지만 DynamoDBMapperConfig
클래스를 사용하면 이러한 기본 동작을 재정의할 수 있습니다.
다음은 사용자 지정 설정으로 DynamoDBMapper
를 생성하는 코드 조각입니다.
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDBMapperConfig mapperConfig = DynamoDBMapperConfig.builder() .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.CLOBBER) .withConsistentReads(DynamoDBMapperConfig.ConsistentReads.CONSISTENT) .withTableNameOverride(null) .withPaginationLoadingStrategy(DynamoDBMapperConfig.PaginationLoadingStrategy.EAGER_LOADING) .build(); DynamoDBMapper mapper = new DynamoDBMapper(client, mapperConfig);
자세한 내용은 AWS SDK for Java API 참조에서 DynamoDBMapperConfig를 참조하세요.
DynamoDBMapperConfig
인스턴스에 사용할 수 있는 인수는 다음과 같습니다.
-
DynamoDBMapperConfig.ConsistentReads
열거 값:-
EVENTUAL
- 매퍼 인스턴스가 최종적으로 일관된 읽기 요청을 사용합니다. -
CONSISTENT
- 매퍼 인스턴스가 강력히 일관된 읽기 요청을 사용합니다. 이 옵션 설정은load
,query
또는scan
작업에 사용할 수 있습니다. 강력히 일관된 읽기는 성능과 결제에 영향을 미칩니다. 자세한 내용은 DynamoDB 제품 세부 정보 페이지를 참조하세요.
매퍼 인스턴스에 읽기 일관성 설정을 지정하지 않으면
EVENTUAL
이 기본값으로 설정됩니다.참고
이 값은 DynamoDBMapper의
query
,querypage
,load
및batch load
작업에만 적용됩니다. -
-
DynamoDBMapperConfig.PaginationLoadingStrategy
열거 값 - 매퍼 인스턴스가query
또는scan
의 결과와 같은 페이지 매긴 데이터 목록을 처리하는 방식을 제어합니다.-
LAZY_LOADING
- 매퍼 인스턴스는 가능할 경우 데이터를 로드하고, 로드한 결과를 모두 메모리에 저장합니다. -
EAGER_LOADING
- 목록 초기화 직후 매퍼 인스턴스가 데이터를 로드합니다. -
ITERATION_ONLY
- 반복자를 사용해야만 목록에서 읽을 수 있습니다. 반복 단계에서는 다음 페이지를 로드하기 전에 이전 결과가 목록에서 사라집니다. 따라서 로드된 결과는 단일 페이지 목록으로만 메모리에 저장합니다. 이는 목록의 반복 횟수가 1회로 제한된다는 것을 의미하기도 합니다. 이러한 전략은 다수의 항목을 처리하면서 메모리 오버헤드를 줄여야 할 때 바람직합니다.
매퍼 인스턴스에 페이지 매김 로딩 전략을 지정하지 않으면
LAZY_LOADING
이 기본값으로 설정됩니다. -
-
DynamoDBMapperConfig.SaveBehavior
열거 값 - 저장 작업 시 매퍼 인스턴스의 속성 처리 방식을 지정합니다.-
UPDATE
- 저장 작업 중 모델링된 속성만 모두 업데이트되고 모델링되지 않은 속성은 업데이트되지 않습니다. 기본적인 숫자 형식(byte, int, long)은 0으로 설정됩니다. 그리고 객체 형식은 null로 설정됩니다. -
CLOBBER
- 저장 작업 중 모델링되지 않은 속성을 비롯하여 모든 속성을 지우고 교체합니다. 즉, 항목을 삭제했다가 다시 생성합니다. 버전이 지정된 필드 제약 조건 역시 무시됩니다.
매퍼 인스턴스에 저장 동작을 지정하지 않으면
UPDATE
가 기본값으로 설정됩니다.참고
DynamoDBMapper 트랜잭션 작업은
DynamoDBMapperConfig.SaveBehavior
열거를 지원하지 않습니다. -
-
DynamoDBMapperConfig.TableNameOverride
- 객체 매퍼 인스턴스에 클래스의DynamoDBTable
주석으로 지정한 테이블 이름은 무시하고 대신에 직접 입력하는 다른 테이블 이름을 사용하도록 지시합니다. 이는 런타임에서 데이터를 여러 테이블로 분할할 때 유용합니다.
필요하다면 작업 단위로 DynamoDBMapper
의 기본 구성 객체를 재정의할 수도 있습니다.