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
—您只能使用 Iterator 从列表读取。在迭代过程中,该列表会在加载下一页之前清除所有之前的结果,这样该列表就会将至多一页加载的结果保留在内存中。这也意味着只能对该列表迭代一次。当处理较大的项目时,为了减少内存开销,建议采用这种策略。
如果您不为映射器实例指定分页加载策略,则会默认为
LAZY_LOADING
。 -
-
DynamoDBMapperConfig.SaveBehavior
枚举值 – 指定映射器实例在保存操作期间如何处理属性:-
UPDATE
—在保存操作期间,所有已建模的属性都将更新,未建模的属性不受影响。基元数字类型 (byte、int 和 long) 设置为 0。对象类型设置为空。 -
CLOBBER
—清除并替换保存操作期间的所有属性,包括未建模的属性。这是通过删除并重新创建项目完成的。受版本控制的字段约束也将被忽略。
如果您未指定适用于映射器实例的保存行为,则会默认为
UPDATE
。注意
DynamoDBMapper 事务操作不支持
DynamoDBMapperConfig.SaveBehavior
枚举。 -
-
DynamoDBMapperConfig.TableNameOverride
对象—指示映射器实例忽略由类的DynamoDBTable
注释指定的表名称,改为使用您提供的不同表名称。当您在运行时将数据划分到多个表中时,可以使用它。
如果需要,您可以针对每个操作覆盖 DynamoDBMapper
的默认配置对象。