This documentation is not maintained. Please refer to doc.castsoftware.com/technologies to find the latest updates.


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

Supported Operations

OperationsScenarioMethod Supported
InsertSpring Framework

org.springframework.data.repository.CrudRepository.save

org.springframework.data.repository.CrudRepository.saveAll

InsertSocial 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

SelectSpring 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

SelectSocial 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

DeleteSpring 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

DeleteSocial 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

IconDescription

Java_DynamoDB_Client

Java_DynamoDB_Table

Java_Unknown_DynamoDB_Client

Java_Unknown_DynamoDB_Table
Link typeSource and destination of linkMethods Supported
parentLink

Between DynamoDB client object and DynamoDB table

-
useInsertLink

Between the caller Java Method objects and DynamoDB client

  • save
  • saveAll

useSelectLink

Between the caller Java Method objects and DynamoDB client

  • existsById
  • findById
  • findAll
useDeleteLink

Between the caller Java Method objects and DynamoDB client

  • delete
  • deleteById
  • deleteAll
  • deleteAllById

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.