public final class VersionedRecordExtension extends Object implements DynamoDbEnhancedClientExtension
MappedTable.builder()
.extendWith(VersionedRecordExtension.builder().build())
.build();
Then 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:
..., integerNumber("version", Customer::getVersion, Customer::setVersion).as(version()), ...
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(Map<String,AttributeValue> item,
OperationContext operationContext,
TableMetadata tableMetadata)
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(Map<String,AttributeValue> item, OperationContext operationContext, TableMetadata tableMetadata)
DynamoDbEnhancedClientExtension
beforeWrite
in interface DynamoDbEnhancedClientExtension
item
- The item that is about to be written.operationContext
- The context under which the operation to be modified is taking place.tableMetadata
- The structure of the table.WriteModification
object that can alter the behavior of the write operation.Copyright © 2020. All rights reserved.