DynamoDBMapper 的可选配置设置 - Amazon DynamoDB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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);

有关更多信息,请参阅 API 参考中的 D MapperConfig ynamoDB。AWS SDK for Java

您可以针对 DynamoDBMapperConfig 的实例使用以下参数:

  • DynamoDBMapperConfig.ConsistentReads 枚举值:

    • EVENTUAL—此映射器实例使用最终一致性读取请求。

    • CONSISTENT—此映射器实例使用强一致性读取请求。您可以将此可选设置用于 loadqueryscan 操作。强一致性读取会影响性能和成本;有关更多信息,请参阅 DynamoDB 产品详细信息页

    如果您未指定适用于映射器实例的读取一致性设置,则默认为 EVENTUAL

    注意

    此值适用于 DynamoDBMapper 的 queryquerypageloadbatch load 操作。

  • DynamoDBMapperConfig.PaginationLoadingStrategy 枚举值 — 控制映射器实例如何处理分页数据列表(如,来自 queryscan 的结果):

    • 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 的默认配置对象。