CAST supports DynamoDB via its com.castsoftware.nosqljava extension. Details about the support provided for Java with Spring Data source code is explained below.
Supported Client Libraries
Library | Supported | |
---|---|---|
DynamoDBCrudRepository | ||
DynamoDBPagingAndSortingRepository |
Supported Operations
Operations | Scenario | Method Supported |
---|---|---|
Insert | Spring Framework | org.springframework.data.repository.CrudRepository.save org.springframework.data.repository.CrudRepository.saveAll |
Insert | Social SignIn | org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.save org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.saveAll org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.save org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.saveAll |
Select | Spring Framework | org.springframework.data.repository.CrudRepository.existsById org.springframework.data.repository.CrudRepository.findAll org.springframework.data.repository.CrudRepository.findById org.springframework.data.repository.PagingAndSortingRepository.findAll |
Select | Social SignIn | org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.existsById org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.findAll org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.findById org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.existsById org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.findById org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.findAll |
Delete | Spring Framework | org.springframework.data.repository.CrudRepository.delete org.springframework.data.repository.CrudRepository.deleteById org.springframework.data.repository.CrudRepository.deleteAllById org.springframework.data.repository.CrudRepository.deleteAll |
Delete | Social SignIn | org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.delete org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.deleteById org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.deleteAllById org.socialsignin.spring.data.dynamodb.repository.DynamoDBCrudRepository.deleteAll org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.delete org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.deleteById org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.deleteAllById org.socialsignin.spring.data.dynamodb.repository.DynamoDBPagingAndSortingRepository.deleteAll |
Objects
Icon | Description |
---|---|
Java_DynamoDB_Client | |
Java_DynamoDB_Table | |
Java_Unknown_DynamoDB_Client | |
Java_Unknown_DynamoDB_Table |
Links
Link type | Source and destination of link | Methods Supported |
---|---|---|
parentLink | Between DynamoDB client object and DynamoDB table | - |
useInsertLink | Between the caller Java Method objects and DynamoDB client |
|
useSelectLink | Between the caller Java Method objects and DynamoDB client |
|
useDeleteLink | Between the caller Java Method objects and DynamoDB client |
|
What results can you expect?
Some example scenarios are shown below:
DynamoDB Client with Java Configuration
@Configuration @EnableDynamoDBRepositories(basePackages = "com.javasampleapproach.dynamodb.repo") public class DynamoDBConfig { @Value("${amazon.dynamodb.endpoint}") private String dBEndpoint; @Value("${amazon.aws.accesskey}") private String accessKey; @Value("${amazon.aws.secretkey}") private String secretKey; @Bean public AmazonDynamoDB amazonDynamoDB() { AmazonDynamoDB dynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials()); if (!StringUtils.isNullOrEmpty(dBEndpoint)) { dynamoDB.setEndpoint(dBEndpoint); } return dynamoDB; } @Bean public AWSCredentials amazonAWSCredentials() { return new BasicAWSCredentials(accessKey, secretKey); } }
Select Operation
public String findAll() { String result = ""; Iterable<Customer> customers = repository.findAll(); for (Customer cust : customers) { result += cust.toString() + "<br>"; } return result; }
Insert Operation
public String save() { // save a single Customer repository.save(new Customer("JSA-1", "Jack", "Smith")); }
Delete Operation
public String delete() { repository.delete(new Customer("JSA-1", "Jack", "Smith")); repository.deleteAll(); return "Done"; }
Known Limitations
- Client is created as unknown, if the name is not retrieved from the properties file or if the name is not be resolved.