DynamoDB e TableNameOverride com prefixo
Estou testando tabelas do DynamoDB e quero configurar nomes de tabelas diferentes para o ambiente prod e dev usando o prefixo "dev_" para desenvolvimento.
Fiz este teste para imprimir o nome da tabela:
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig.TableNameOverride;
TableNameOverride tbl = new TableNameOverride("test").withTableNamePrefix("dev_");
System.out.println("name=" + tbl.getTableName() + " prefix=" + tbl.getTableNamePrefix());
Isso imprime:name=null prefix=dev_
Como é que o nome aqui é nulo?
TableNameOverride tbl = new TableNameOverride("test");//.withTableNamePrefix("dev_");
System.out.println("name=" + tbl.getTableName() + " prefix=" + tbl.getTableNamePrefix());
Isso imprime:name=test prefix=null
*Como posso obter o nome da tabela como "dev_test"? *
Eu quero usar isso mais tarde para obter um prefixo "dev_" para todas as tabelas no modo de desenvolvimento como este:
DynamoDBTable annotation = (DynamoDBTable) myclass.getClass().getAnnotation(DynamoDBTable.class);
TableNameOverride tbl = new TableNameOverride(annotation.tableName()).withTableNamePrefix("dev_");
Ou existe outra solução para separar entre tabelas dev e prod?
Primeiro pensei em colocá-los em regiões separadas, mas não tenho certeza disso.
Também pode usar isso:
mapper.save(ck, new DynamoDBMapperConfig(new TableNameOverride((isDev ? "dev_" : "") + annotation.tableName())));