How to delete an item from dynamoDB in Java – DynamoDB DeleteItem
5 years ago Lalit Bhagtani 0
In this tutorial, we will learn about how to delete an item from dynamoDB (DeleteItem) using java language.
DynamoDB
Amazon DynamoDB is a fully managed NoSQL database services offered by Amazon as part of its Amazon Web Service (AWS) portfolio. It provides fast and predictable performance with seamless scalability. DynamoDB is a key-value datastore, where each item (row) in a table is a key-value pair. The primary key is the only required attribute for an item and uniquely identifies each item.
Project Setup
Create a simple maven project in your favorite IDE and add below mentioned dependency in your pom.xml file.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.524</version>
</dependency>
For latest version of aws library, check this page.
Table Schema
In this example, we will delete an item from JOB table. Schema of this table is as follows:-
- CountryName ( Partition Key ) :- It represents name of the country for which job is posted. It is stored as String data type ( ScalarAttributeType S ).
- JobId (Sort Key) :- It represents unique id of the posted job. It is of Number datatype ( ScalarAttributeType N ).
- CompanyName :- It represents name of the company by which job is posted. It is of String datatype ( ScalarAttributeType S ).
- JobTitle :- As the name suggest, it represents tile of the job. It is of String datatype ( ScalarAttributeType S ).
- JobDescription :- It represents details job description. It is of String datatype ( ScalarAttributeType S ).
DynamoDB Connection
Create an object of AmazonDynamoDB ( com.amazonaws.services.dynamodbv2.AmazonDynamoDB ) class for sending a client request to dynamoDB. To get instance of this class, we will use AmazonDynamoDBClientBuilder builder class. It requires three important parameters :-
- Region :- It is a region where dynamoDB table will be stored.
- ACCESS_KEY :- It is a access key for using dynamoDB. You can generate this key, using aws management console.
- SECRET_KEY :- It is a secret key of above mentioned access key.
Here is a code example :-
AmazonDynamoDB dynamoDB = AmazonDynamoDBClientBuilder.standard()
.withRegion(Regions.AP_SOUTH_1)
.withCredentials(new AWSStaticCredentialsProvider
(new BasicAWSCredentials("ACCESS_KEY","SECRET_KEY")))
.build();
DeleteItem
Steps to create and send DeleteItemRequest to dynamoDB are as follows:-
- Instantiate DeleteItemRequest object, this object will send the client request to dynamoDB.
- Set name of the table whose item is to be deleted. In our case JOB.
- Set return consumed capacity as TOTAL, this returns aggregate consumed capacity.
- Set return values as ALL_OLD, this returns item’s values before it is deleted.
- Create a map of primary key attributes and their values.
- Invoke the deleteItem method on AmazonDynamoDB object by passing DeleteItemRequest object as an argument.
Example
import java.util.HashMap; import java.util.Map; import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.DeleteItemRequest; import com.amazonaws.services.dynamodbv2.model.DeleteItemResult; import com.amazonaws.services.dynamodbv2.model.ReturnConsumedCapacity; import com.amazonaws.services.dynamodbv2.model.ReturnValue; public class DeleteItem { public static void main(String[] args) { /* Create DynamoDB Client Object */ AmazonDynamoDB dynamoDB = AmazonDynamoDBClientBuilder .standard() .withRegion(Regions.AP_SOUTH_1) .withCredentials(new AWSStaticCredentialsProvider( new BasicAWSCredentials("ACCESS_KEY","SECRET_KEY"))) .build(); /* Create an Object of DeleteItemRequest */ DeleteItemRequest request = new DeleteItemRequest(); /* Setting Table Name */ request.setTableName("JOB"); /* Setting Consumed Capacity */ request.setReturnConsumedCapacity(ReturnConsumedCapacity.TOTAL); /* To get old value of item's attributes before it is deleted */ request.setReturnValues(ReturnValue.ALL_OLD); /* Create a Map of Primary Key attributes */ Map<String, AttributeValue> keysMap = new HashMap<>(); keysMap.put("CountryId", new AttributeValue("18")); keysMap.put("JobId", (new AttributeValue()).withN("1")); request.setKey(keysMap); try { /* Send Delete Item Request */ DeleteItemResult result = dynamoDB.deleteItem(request); System.out.println("Status : " + result.getSdkHttpMetadata().getHttpStatusCode()); System.out.println("Consumed Capacity : " + result.getConsumedCapacity().getCapacityUnits()); /* Printing Old Attributes Name and Values */ if(result.getAttributes() != null) { result.getAttributes().entrySet().stream() .forEach( e -> System.out.println(e.getKey() + " " + e.getValue())); } } catch (AmazonServiceException e) { System.out.println(e.getErrorMessage()); } } }
References :-
That’s all for how to delete an item from dynamoDB (DeleteItem) using java language. If you liked it, please share your thoughts in comments section and share it with others too.