public final class VersionedRecordExtension extends Object implements DynamoDbEnhancedClientExtension
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.
Modifier and Type | Class and Description |
---|---|
static class |
VersionedRecordExtension.AttributeTags |
static class |
VersionedRecordExtension.Builder |
Modifier and Type | Method and Description |
---|---|
WriteModification |
beforeWrite(DynamoDbExtensionContext.BeforeWrite context)
This hook is called just before an operation is going to write data to the database.
|
static VersionedRecordExtension.Builder |
builder() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
afterRead
public static VersionedRecordExtension.Builder builder()
public WriteModification beforeWrite(DynamoDbExtensionContext.BeforeWrite context)
DynamoDbEnhancedClientExtension
beforeWrite
in interface DynamoDbEnhancedClientExtension
context
- The DynamoDbExtensionContext.BeforeWrite
context containing the state of the execution.WriteModification
object that can alter the behavior of the write operation.Copyright © 2021. All rights reserved.