Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Panel

Table of Contents



Info

CAST supports DynamoDB via its NoSQL for Java extension. Details about the support provided for Java with Spring Data source code is explained below.

Supported Client Libraries

Supported Operations

OperationsMethod Supported
Insert


Expand
titleSpring Framework
  • org.springframework.data.repository.CrudRepository.save
  • org.springframework.data.repository.CrudRepository.saveAll


Expand
titleSocial 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


Expand
titleSpring 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


Expand
titleSocial 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


Expand
titleSpring 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


Expand
titleSocial 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

Image Modified

Java_DynamoDB_Client

Image Modified

Java_DynamoDB_Table

Image Modified

Java_Unknown_DynamoDB_Client

Image Modified

Java_Unknown_DynamoDB_Table

Links

Links are created for transaction and function point needs:

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

  • existsById
  • findById
  • findAll
useDeleteLink
  • delete
  • deleteById
  • deleteAll
  • deleteAllById

What results can you expect?

Once the analysis/snapshot generation is completed, you can view the results in the normal manner (for example via CAST Enlighten). Some examples are shown below.

DynamoDB Client with Java Configuration

Expand
titleDynamoDB Client


Code Block
languagejava
@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);
	}
}

Image Modified

Select Operation

Expand
titleSelect Operation


Code Block
languagejava
public String findAll() {
		String result = "";
		Iterable<Customer> customers = repository.findAll();

		for (Customer cust : customers) {
			result += cust.toString() + "<br>";
		}

		return result;
	}

Image Modified

Insert Operation

Expand
titleInsert Operation


Code Block
languagejava
public String save() {
		// save a single Customer
		repository.save(new Customer("JSA-1", "Jack", "Smith"));

}

Image RemovedImage Added

Delete Operation

Expand
titleDelete Operation


Code Block
languagejava
public String delete() {
		repository.delete(new Customer("JSA-1", "Jack", "Smith"));
		repository.deleteAll();
		return "Done";
	}

Image Removed

Evolution

  • Better resolution for tables
  • Query Methods are supported for Spring Data.

Image Added


Limitations

  • Client is created as unknown, if the name is not retrieved from the properties file or if the name could is not be resolved.

Future Scope

  • To Support Query Methods with @Query annotation