Enterprise Java
Insert DynamoDB Items with DynamoDBMapper
In a previous post we used DynamoDBMapper in order to map DynamoDB Tables into Java objects.
When it comes to insert, our actions are pretty much the same but with a more convenient way. In order to insert an item all you have to do is to persist an object using the object mapper
In our case, we will create a User repository that does a simple insert.
package com.gkatzioura.dynamodb.mapper.repository; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; import com.gkatzioura.dynamodb.mapper.entities.User; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by gkatzioura on 9/22/16. */ public class UserMapperRepository { private DynamoDBMapper dynamoDBMapper; public UserMapperRepository(AmazonDynamoDB amazonDynamoDB) { dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB); } public void insert(User user) { dynamoDBMapper.save(user); } }
To persist we just have to create a simple object.
@Test public void testInsertUser() { User user = new User(); user.setRegisterDate(new Date().getTime()); user.setFullName("John Doe"); user.setEmail("john@doe.com"); userMapperRepository.insert(user); }
Also using DynamoDBMapper we can do batch inserts or batch deletes. Therefore we will add two extra methods to the repository.
public void insert(List<User> users) { dynamoDBMapper.batchWrite(users,new ArrayList<>()); } public void delete(List<User> users) { dynamoDBMapper.batchDelete(users); }
Adding items in batch (or deleting) them, simply requires to pass a list of objects that contains values for the keys defined.
@Test public void testBatchUserInsert() { List<User> users = new ArrayList<>(); for(int i=0;i<10;i++) { String email = emailPrefix+i+"@doe.com"; User user = new User(); user.setRegisterDate(new Date().getTime()); user.setFullName("John Doe"); user.setEmail("john@doe.com"); users.add(user); } userMapperRepository.insert(users); } @Test public void testBatchDelete() { testBatchUserInsert(); List<User> users = new ArrayList<>(); for(int i=0;i<10;i++) { String email = emailPrefix+i+"@doe.com"; User user = new User(); user.setRegisterDate(new Date().getTime()); user.setFullName("John Doe"); user.setEmail("john@doe.com"); users.add(user); } userMapperRepository.delete(users); }
You can find the sourcecode on github
Reference: | Insert DynamoDB Items with DynamoDBMapper from our JCG partner Emmanouil Gkatziouras at the gkatzioura blog. |