

# RDS Data API 用の Java クライアントライブラリの使用
<a name="data-api.java-client-library"></a>

RDS Data API (Data API) 用の Java クライアントライブラリをダウンロードして使用できます。この Java クライアントライブラリは、Data API を使用する代替手段を提供します。このライブラリを使用すると、クライアント側のクラスを Data API のリクエストとレスポンスにマッピングできます。このマッピングのサポートにより、`Date`、`Time`、`BigDecimal` などの特定の Java タイプとの統合が容易になります。

## Data API 用の Java クライアントライブラリのダウンロード
<a name="data-api.java-client-library.downloading"></a>

Data API Java クライアントライブラリは、GitHub の次の場所にあるオープンソースです。

[ https://github.com/awslabs/rds-data-api-client-library-java](https://github.com/awslabs/rds-data-api-client-library-java)

ソースファイルからライブラリを手動で構築できますが、ベストプラクティスは、Apache Maven 依存関係管理を使用してライブラリを使用する方法です。Maven POM ファイルに次の依存関係を追加します。

 バージョン 2.x (AWS SDK 2.x 互換) では、以下を使用します。

```
<dependency>
   <groupId>software.amazon.rdsdata</groupId>
   <artifactId>rds-data-api-client-library-java</artifactId>
   <version>2.0.0</version>
</dependency>
```

 バージョン 1.x (AWS SDK 1.x 互換) では、以下を使用します。

```
<dependency>
    <groupId>software.amazon.rdsdata</groupId>
    <artifactId>rds-data-api-client-library-java</artifactId>
    <version>1.0.8</version>
</dependency>
```

## Java クライアントライブラリの例
<a name="data-api.java-client-library.examples"></a>

以下に、Data API Java クライアントライブラリを使用する一般的な例をいくつか示します。これらの例では、`accounts` と `accountId` の 2 つの列を含むテーブル `name` があることを前提としています。また、次のデータ転送オブジェクト (DTO) も使用されています。

```
public class Account {
    int accountId;
    String name;
    // getters and setters omitted
}
```

クライアントライブラリを使用すると、DTO を入力パラメータとして渡すことができます。次の例は、顧客 DTO が入力パラメータセットにマップされる方法を示しています。

```
var account1 = new Account(1, "John");
var account2 = new Account(2, "Mary");
client.forSql("INSERT INTO accounts(accountId, name) VALUES(:accountId, :name)")
         .withParamSets(account1, account2)
         .execute();
```

場合によっては、単純な値を入力パラメータとして使用する方が簡単です。これには、次の構文を使用します。

```
client.forSql("INSERT INTO accounts(accountId, name) VALUES(:accountId, :name)")
         .withParameter("accountId", 3)
         .withParameter("name", "Zhang")
         .execute();
```

以下は、入力パラメータとして単純な値を使用するもう 1 つの例です。

```
client.forSql("INSERT INTO accounts(accountId, name) VALUES(?, ?)", 4, "Carlos")
         .execute();
```

クライアントライブラリは、結果が返されたときに DTO への自動マッピングを提供します。次の例は、結果が DTO にどのようにマップされるかを示しています。

```
List<Account> result = client.forSql("SELECT * FROM accounts")
          .execute()
          .mapToList(Account.class);

Account result = client.forSql("SELECT * FROM accounts WHERE account_id = 1")
          .execute()
          .mapToSingle(Account.class);
```

多くの場合、データベースの結果セットには 1 つの値しか含まれていません。このような結果の取得を簡素化するために、クライアントライブラリは次の API を提供しています。

```
int numberOfAccounts = client.forSql("SELECT COUNT(*) FROM accounts")
          .execute()
          .singleValue(Integer.class);
```

**注記**  
`mapToList` 関数は、SQL 結果セットをユーザー定義のオブジェクトリストに変換します。Java クライアントライブラリの `ExecuteStatement` コールで `.withFormatRecordsAs(RecordsFormatType.JSON)` ステートメントの使用は、同じ目的を果たすためサポートしていません。詳細については、「[JSON 形式で RDS Data API クエリ結果を処理する](data-api-json.md)」を参照してください。