2016-01-08 2 views
6

Ich benutze DynamoDB Mapper zum Löschen eines Elements, muss aber sicherstellen, dass es existiert, bevor es gelöscht wird?Kann ich ein Element mit DynamoDB Mapper löschen, ohne es zuerst zu laden?

So mache ich zur Zeit

public void delete(final String hashKey, final Long rangeKey) { 
    final Object obj = mapper.load(Object.class, hashKey, rangeKey); 
    if (obj != null) { 
     mapper.delete(obj); 
    } 
} 

Wenn es eine Möglichkeit, ein Element zu löschen, ohne sie zuerst geladen? Ich möchte es leise zurückgeben, wenn der Artikel nicht gefunden wurde

Antwort

4

Ja, Sie können!

einfach ein Objekt mit der ID, die Sie löschen möchten, erstellen und es als Objekt der Lösch Methode übergeben:

... 
MyObject object = new MyObject(); 
object.setHashKey(hashKey); 
object.setRangeKey(rangeKey); 
mapper.delete(object); 
.... 
2

Sie können dies auch mit com.amazonaws.services.dynamodbv2.document.Table Beispiel:

table.deleteItem("hashKeyAttributeName", hashKey, "rangeKeyAttribureName", rangeKey); 

zu Erstellen Sie eine Instanz einer Tabelle, die Sie verwenden können:

BasicAWSCredentials credentials = new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey); // set access and secret keys 
AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard() 
     .withCredentials(new AWSStaticCredentialsProvider(credentials)) 
     .withRegion("us-west-1") // set aws region 
     .build(); 
Table table = new DynamoDB(amazonDynamoDB).getTable(tableName);