I am using Amazon\'s DynamoDB java SDK and want to know the difference between the AmazonDynamoDBClient and DynamoDB classes. I can\'t seem to find anything on them since there
This is a good question. It looks like DynamoDB
is a wrapper to the AmazonDynamoDBClient
, providing a different interface. So this may be obvious and not the answer you are looking for but let me describe some of the differences between them.
The createTable
method in AmazonDynamoDBClient
returns back a CreateTableResult
object, whereas the DynamoDB
's createTable method returns back a Table
object. This Table
object can then be used to do CRUD on that table. The Table
object starts looking like a generic ORM object for DynamoDB. So its not really DynamoDB
class vs AmazonDynamoDBClient
, its more like DynamoDB
& Table
classes vs AmazonDynamoDBClient
.
AmazonDynamoDBClient
is obviously older than the DynamoDB
class. DynamoDB
is pretty new, coming out in 1.9.x. But there is another class here worth mentioning, DynamoDBMapper
. DynamoDBMapper
allows for even more ORM like operations. Allowing developers to annotate their JavaBean data-model's so that they can easily be CRUD'd against a DynamoDB table. You get to work with your objects directly and the DynamoDBMapper
will do the CRUD work on the DynamoDB database. DynamoDBMapper
is older than the DynamoDB
class. I think maybe some developers did not want to work with the DynamoDBMapper
(maybe not a fan of OO or annotations?) and there needed to be another paradigm, but I'm only hypothesizing. So the DynamoDB
and Table
classes were created. With the Table
class you can interact with your tables more easily than the AmazonDynamoDBClient
but without the overhead of creating JavaBean data-models that the DynamoDBMapper
require.