Я пытаюсь добавить поддержку транзакций в существующее хранилище DynamodB, которое выглядит следующим образом:
public interface Storage<T>{
T put(T entity);
...
}
public abstract class AbstractDynamoStorage<T> implements Storage<T> {
@Override
public T put(T entity) {
...
}
}
public class DynamoOrderStorage extends AbstractDynamoStorage<CoreOrder> {
...
}
public class DynamoCustomerStorage extends AbstractDynamoStorage<CoreCustomer> {
...
}
Теперь я хочу добавить к этому поддержку транзакций, используя недавно запущенные транзакции DDB, чтобы можно было совершать несколько операций (put, write, update ..) в нескольких таблицах.
Вот мой подход:
interface TransactDAO{
void commitWriteTransaction(TransactWriteRequest writeReq);
}
class DynamoTransactImpl implements TransactDAO{
@Override:
commitWriteTransaction(TransactWriteRequest request){
//dynamodb.transactWriteItems();
}
}
class DynamoDBTransactWriteItem implements TransactWriteRequest{
List<DynamoTransactWriteItem<T>> transactWriteItems;
}
class DynamoTransactWritePutItem<T> implements DynamoTransactionWriteItem<T>{
String tableName;
String data;
...
}
Меня беспокоит то, что конкретные классы хранения (DynamoOrderStorage и DynamoCustomerStorage) имеют разные типы, и мой подход может не сработать здесь. Есть ли другой лучший способ добиться этого?