DynamoDB: ネストされた JSON 構造を持つテーブルを作成するにはどうすればいいですか? 質問する

DynamoDB: ネストされた JSON 構造を持つテーブルを作成するにはどうすればいいですか? 質問する

以下の構造のテーブルを dynamoDB に作成したいと思います。

{
  "CartId": 123,
  "UserId": 356,
  "CartItems": [
    {
      "ProductId": 100,
      "Quantity": 50
    },
    {
      "ProductId": 121,
      "Quantity": 51
    }
  ]
}

チュートリアルやドキュメントのどこにでも、テーブルには以下のタイプの属性のみを含めることができると書かれています。

  1. 文字列のセット

  2. 数字のセット

  3. バイナリのセット

上記の構造を DynamoDB に保存する方法が思いつきません。助けていただけませんか?

私は Java のオブジェクト マッパー API を使用しています。この特定のテーブル構造にマップできるクラスを作成する方法も教えていただけるとありがたいです。

ベストアンサー1

最も簡単な方法は@DynamoDBDocument

  1. Maven依存関係を追加する
<dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-dynamodb</artifactId>
        <version>1.11.186</version>
</dependency>
  1. POJOを作成する
@DynamoDBTable(tableName = "Customer")
public class Customer
{ 
    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    private String id;

    private String firstName;

    private List<Foo> fooList;
}

@DynamoDBDocument
public static class Foo {
    private String name;
}
  1. リポジトリを作成する
@EnableScan
public interface CustomerRepository extends CrudRepository<Customer,String>

次に を呼び出しますcustomerRepository.save(customer)。結果は次のようになります。

{
  "firstName": "Test",
  "fooList": [
    {
      "name": "foo"
    },
    {
      "name": "foo2"
    }
  ],
  "id": "e57dd681-8608-4712-a39a-f3e0f31a5e27"
}

おすすめ記事