2016-10-20 5 views
5

Как обновить элемент DynamoDB с помощью DynamoDBMapper?Обновить элемент DynamoDB с помощью DynamoDBMapper в Java

У меня есть несколько процессов, используя таблицу DynamoDB, таким образом, get + save создаст несогласованность. Я не могу найти метод для обновления элемента с помощью DynamoDBMapper.

ответ

10

Метод save() будет выполнять putItem или updateItem на основе значения, установленного в SaveBehavior. Пожалуйста, обратитесь к описанию ниже. По этой причине не существует метода обновления в классе DynamoDBMapper. Однако существует отдельный метод удаления.

Сохранение предмета в DynamoDB. Метод используется модуль определяется значение DynamoDBMapperConfig.getSaveBehavior(), чтобы использовать либо AmazonDynamoDB.putItem (PutItemRequest) или AmazonDynamoDB.updateItem (UpdateItemRequest):

UPDATE (по умолчанию): обновления не будет влияют на немоделированные атрибуты при операции сохранения и Значение null для смоделированного атрибута удалит его из этого элемента в DynamoDB. Из-за ограничения запроса updateItem реализация UPDATE отправит запрос putItem, когда сохраняется только объект с ключом , и он отправит еще один запрос updateItem, если указанные ключи уже существуют в таблице.

UPDATE_SKIP_NULL_ATTRIBUTES: Аналогично ОБНОВИТЬ исключением того, что она игнорирует любой атрибут нулевое значение (s) и не будет удалять их из этого пункта в DynamoDB. Он также гарантирует отправку только одного запроса updateItem , независимо от того, является ли объект ключевым или нет.

CLOBBER: CLOBBER очистит и заменить все атрибуты, включенные unmodeled те, (удалить и заново) при сохранении. Ограничения поля версии также будут не учитываться . Любые параметры, указанные в параметре saveExpression , будут накладываться на любые ограничения из-за атрибутов версии.

Пример использование: -

DynamoDBMapperConfig dynamoDBMapperConfig = new DynamoDBMapperConfig(SaveBehavior.UPDATE); 
dynamoDBMapper.save(yourObject, dynamoDBMapperConfig); 
+1

Это должно быть помечено как ответ. – WMios

+0

I второй это. –

0

Чтобы иметь последовательность в ваших операциях дб записи динамо вам придется выбрать один вариант между оптимистической блокировкой и условными записями.

Вот ссылки на документацию AWS, которые могут вам помочь;

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html