Amazon dynamodb 如何在DynamoDB事务中使用UpdateItemRequest?

Amazon dynamodb 如何在DynamoDB事务中使用UpdateItemRequest?,amazon-dynamodb,aws-sdk-java,Amazon Dynamodb,Aws Sdk Java,我有一个JavaSpring应用程序,其中我使用DynamoDB,到目前为止没有事务。然而,我最近遇到了一个新的用例,它需要将相关对象持久化在一起。我对这个主题是新手,因此对DynamoDB事务有一些了解,但找不到以适当的面向对象方式使用API的方法。我错过了什么 现在,当我需要更新一个对象时,我按照如下步骤进行,构建一个UpdateItemRequest: Map<String, AttributeValueUpdate> updates = new HashMap<>

我有一个JavaSpring应用程序,其中我使用DynamoDB,到目前为止没有事务。然而,我最近遇到了一个新的用例,它需要将相关对象持久化在一起。我对这个主题是新手,因此对DynamoDB事务有一些了解,但找不到以适当的面向对象方式使用API的方法。我错过了什么

现在,当我需要更新一个对象时,我按照如下步骤进行,构建一个
UpdateItemRequest

Map<String, AttributeValueUpdate> updates = new HashMap<>();
// fill updates

Map<String, ExpectedAttributeValue> expected = new HashMap<>();
// fill expectations

UpdateItemRequest request = new UpdateItemRequest()
            .withTableName(TABLE_NAME)
            .withKey(key)
            .withAttributeUpdates(updates)
            .withExpected(expected);
dynamoDBClient.updateItem(request);
Map updates=newhashmap();
//填充更新
Map expected=新的HashMap();
//满足期望
UpdateItemRequest请求=新的UpdateItemRequest()
.withTableName(表名称)
.带钥匙(钥匙)
.WithAttributeUpdate(更新)
.预期的(预期的);
dynamoDBClient.updateItem(请求);
但是,构建事务的文档建议使用以下语法:

Map<String, AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":new_status", new AttributeValue("SOLD"));
expressionAttributeValues.put(":expected_status", new AttributeValue("IN_STOCK"));

Update markItemSold = new Update()
    .withTableName(PRODUCT_TABLE_NAME)
    .withKey(productItemKey)
    .withUpdateExpression("SET ProductStatus = :new_status")
    .withExpressionAttributeValues(expressionAttributeValues)
    .withConditionExpression("ProductStatus = :expected_status")
    .withReturnValuesOnConditionCheckFailure(ReturnValuesOnConditionCheckFailure.ALL_OLD);
Map expressionAttributeValues=newhashmap();
expressionAttributeValue.put(“:new_status”,new AttributeValue(“已售出”));
expressionAttributeValue.put(“:预期状态”,新属性值(“库存”);
Update markitemsaled=new Update()
.withTableName(产品\表格\名称)
.withKey(productItemKey)
.withUpdateExpression(“设置产品状态=:新状态”)
.带有ExpressionAttributeValue(ExpressionAttributeValue)
.withConditionExpression(“ProductStatus=:预期的_状态”)
.带有ReturnValuesOnConditionCheckFailure(ReturnValuesOnConditionCheckFailure.ALL_OLD);
如果我要按照文档进行操作,那么我需要构建一个
更新表达式
——但是我要保存的内容可能非常复杂,这将需要一些繁重的字符串操作,这是不令人满意的(要创建解析器,速度会很慢并且容易出错)

是否有方法从
UpdateItemRequest
获取此
更新表达式
?或者有什么推荐的方法来构建这样复杂的表达式,例如,作为某种东西的序列化形式?或者更好,使用面向对象的方式来使用事务,传递更新对象的映射,而不是一个大字符串

谢谢