Introduction

Spring Data DynamoDBは Spring DataのコミュニティプロジェクトでSpring Data JPAなどと同様、データベースアクセス処理を抽象化し、CRUD操作などの処理をフレームワークとして提供する。 主な特徴は以下の通り挙げられる。

  • DynamoDBテーブルに対するCRUDメソッドの実装の提供。
  • クエリ名をベースとした動的クエリの生成
  • ページネーション、動的なクエリの実行、カスタムデータアクセスの統合
  • データ射影
  • Spring Data RestとのRESTサポート

今回、以下の環境で簡単な動作検証を実施した。

動作環境

[OS]
MacOSX 10.13.6

[JVM]
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

[Spring]
Spring Framework Boot 2.1.2.RELEASE| br| Spring Framework Data DynamoDB 5.1.0

事前準備

pom.xmlの設定

Mavenプロジェクトに以下のライブラリを追加しておく。Lombokを追加しているが、こちらは任意である。本ドキュメントでは、これらのライブラリを利用したコードが出てくるので注意すること。

pom.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.2.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.github.derjust</groupId>
        <artifactId>spring-data-dynamodb</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

AWS DynamoDBの構築

事前にAWS コンソールのメニューから、DynamoDBのテーブルを作成しておく。 DynamoDBの作成 の通り、テーブル名、パーティションキーを入力しておく。

  • テーブル名:sample_db
  • パーティションキー:sample_key
  • ソートキー:sort_key
  • デフォルト設定の使用:チェックする

また、事前にDynamoDBへのフルアクセス権限を付与したローカル開発向けのアカウントを作成しておき、認証キーとシークレットキーをユーザホームディレクトリの.aws/credentialに指定しておくこと。