Insert DynamoDB Items With DynamoDBMapper
As we continue our series, once you've mapped your tables into Java objects, it's then time to insert them. Learn how to do that here.
Join the DZone community and get the full member experience.
Join For FreeIn 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 source code on GitHub.
Published at DZone with permission of Emmanouil Gkatziouras, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments