Class VersionedRecordExtension

java.lang.Object
software.amazon.awssdk.enhanced.dynamodb.extensions.VersionedRecordExtension
All Implemented Interfaces:
DynamoDbEnhancedClientExtension

@ThreadSafe public final class VersionedRecordExtension extends Object implements DynamoDbEnhancedClientExtension
This extension implements optimistic locking on record writes by means of a 'record version number' that is used to automatically track each revision of the record as it is modified.

This extension is loaded by default when you instantiate a DynamoDbEnhancedClient so unless you are using a custom extension there is no need to specify it.

To utilize versioned record locking, first create an attribute in your model that will be used to store the record version number. This attribute must be an 'integer' type numeric (long or integer), and you need to tag it as the version attribute. If you are using the BeanTableSchema then you should use the DynamoDbVersionAttribute annotation, otherwise if you are using the StaticTableSchema then you should use the VersionedRecordExtension.AttributeTags.versionAttribute() static attribute tag.

Then, whenever a record is written the write operation will only succeed if the version number of the record has not been modified since it was last read by the application. Every time a new version of the record is successfully written to the database, the record version number will be automatically incremented.