

# Usar a biblioteca do cliente Java para a API de dados do RDS
<a name="data-api.java-client-library"></a>

É possível baixar e usar uma biblioteca do cliente Java para a API de dados do RDS (API de dados). Essa biblioteca do cliente Java fornece uma forma alternativa de usar a API de dados. Usando essa biblioteca, é possível associar as classes no lado do cliente a solicitações e respostas da API de dados. Esse suporte ao mapeamento pode facilitar a integração com alguns tipos específicos de Java, como `Date`, `Time` e `BigDecimal`.

## Baixar a biblioteca cliente Java para API de dados
<a name="data-api.java-client-library.downloading"></a>

A biblioteca de cliente Java da API de dados é de código aberto no GitHub no seguinte local:

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

É possível criar a biblioteca manualmente a partir de arquivos de origem, mas a melhor prática é consumir a biblioteca usando o gerenciamento de dependência do Apache Maven. Adicione a dependência a seguir ao arquivo POM Maven.

 Para a versão 2.x, que é compatível com o AWS SDK 2.x, use o seguinte:

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

 Para a versão 1.x, que é compatível com o AWS SDK 1.x, use o seguinte:

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

## Exemplos de biblioteca cliente Java
<a name="data-api.java-client-library.examples"></a>

É possível encontrar a seguir alguns exemplos comuns de uso da biblioteca de cliente Java da API de dados. Estes exemplos pressupõem que você tenha uma tabela `accounts` com duas colunas: `accountId` e `name`. Você também tem o seguinte objeto de transferência de dados (DTO).

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

A biblioteca de cliente permite passar DTOs como parâmetros de entrada. O exemplo a seguir mostra como DTOs do cliente são mapeados para conjuntos de parâmetros de entrada.

```
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();
```

Em alguns casos, é mais fácil trabalhar com valores simples como parâmetros de entrada. Para isso, siga a seguinte sintaxe.

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

Veja a seguir outro exemplo que funciona com valores simples como parâmetros de entrada.

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

A biblioteca de cliente fornece mapeamento automático para DTOs quando o resultado é retornado. Os exemplos a seguir mostram como o resultado é mapeado para os DTOs.

```
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);
```

Em vários casos, o conjunto de resultados do banco de dados inclui apenas um valor. Para simplificar a recuperação de tais resultados, a biblioteca de cliente oferece a API a seguir:

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

**nota**  
A função `mapToList` converte um conjunto de resultados do SQL em uma lista de objetos definida pelo usuário. Não é possível usar a instrução `.withFormatRecordsAs(RecordsFormatType.JSON)` em uma chamada de `ExecuteStatement` para a biblioteca do cliente Java, porque ela atende ao mesmo propósito. Para obter mais informações, consulte [Processar resultados de consulta da API de dados do Amazon RDS no formato JSON](data-api-json.md).