本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Java 的 SDK 版本 1 和版本 2 之间的乐观锁定区别
V1 和 V2 都使用属性注释实现乐观锁定,该注释标记 bean 类上的一个属性来存储版本号。
V1 | 第 2 版 | |
---|---|---|
Bean 类注释 | @DynamoDBVersionAttribute |
@DynamoDbVersionAttribute (请注意,V2 使用小写的 “b”) |
初始保存 | 版本号属性设置为 1。 |
使用设置的版本属性的起始值 |
更新 | 如果条件检查验证正在更新的对象的版本号是否与数据库中的版本号相匹配,则版本号属性将增加 1。 |
如果条件检查验证正在更新的对象的版本号是否与数据库中的版本号相匹配,则版本号属性将递增。 版本号属性按设置的 |
删除 | DynamoDBMapper 添加条件检查,以确定要删除的对象的版本号是否与数据库中的版本号相匹配。 |
V2 不会自动为删除操作添加条件。如果要控制删除行为,则必须手动添加条件表达式。 以下示例
|
带条件检查的交易写入 | 不能在addConditionCheck 方法中使用带@DynamoDBVersionAttribute 注解的 Bean 类。 |
您可以在addConditionCheck 生成器方法中使用带有@DynamoDbVersionAttribute 注解的 bean 类来transactWriteItems 处理请求。 |
禁用 | 通过将
DynamoDBMapperConfig.SaveBehavior 枚举值从更改为来禁用乐观锁定UPDATE 。CLOBBER |
请勿使用 |