Explorando o Couchbase Mobile no Android: Mapeamento de objetos

Photo of Oldest Known Map

Foto do mapa mais antigo conhecido

Foto cortesia de cea + com permissão sob licença CC BY 2.0

Nesta postagem, gostaria de continuar explorando os elementos fundamentais da Couchbase Mobile no Android. Grande parte das informações também se aplicará ao iOS. Aguarde mais informações sobre o iOS especificamente e sobre ferramentas multiplataforma em breve.

Você pode ler uma visão geral de nível médio sobre por que me converti ao NoSQL e ao uso de Couchbase Lite em vez de SQLite e outras opções de armazenamento para dispositivos móveis aqui.

Esta postagem fará com que você comece a usar o Android em alguns minutos. E este explora as operações básicas do banco de dados. Você verá nessa postagem que eu uso Mapas extensivamente.

Lidando diretamente com JSON

Você pode fazer muitas coisas com mapas. Muitas vezes, você também extrai dados para outras estruturas, como listas. Isso pode ser tudo o que você precisa. Aqui está um exemplo do tipo de tipificação necessária.

No aplicativo de exemplo, armazenei um conjunto de comentários como uma matriz de strings. Você ainda precisa extrair a matriz com base em uma chave, mas, a partir daí, pode tratá-la como uma lista.

Um toque a mais de sofisticação

Para aplicativos mais sofisticados, talvez você queira converter seus documentos totalmente em objetos.

Há várias bibliotecas disponíveis para converter JSON de/para objetos Java. As APIs padrão do Android para lidar com JSON têm algumas limitações reais, mas elas são integradas, o que é uma vantagem. O Google tem uma biblioteca, Gson. Gson pode lidar com casos em que você não tem acesso à fonte. Achei interessante ler a seção Documento de design da Gson para obter insights mais profundos sobre outras considerações ao lidar com JSON.

Nesta postagem, falarei sobre outra biblioteca JSON popular, Jackson. Jackson é bastante maduro, oferece suporte a três abordagens diferentes para lidar com JSON e tem uma forte reputação de eficiência.

Vinculação de dados

Leia os detalhes sobre os três modos para Jackson aqui se você quiser. A maioria dos desenvolvedores de aplicativos provavelmente desejará usar o vinculação de dados abordagem. Talvez isso pareça um pouco intimidador, mas na verdade não é. A vinculação de dados aqui se refere apenas à correspondência do JSON com as propriedades de um objeto de alguma forma automatizada.

Por exemplo, a vinculação de dados significa fazer o seguinte

e usá-lo para criar uma instância deste

Jackson é muito bom em descobrir como fazer isso sem ajuda. Como os campos acima são todos declarados públicos, não há mais nada a fazer. Supondo que os dados JSON estejam em um arquivo Mapa chamado "map", esse snippet preencherá o arquivo a Contato instância.

Se o JSON acima representar os dados em um documento do Couchbase, o código seria algo como isto.

Isso funciona se os campos não forem públicos e se houver getters e setters correspondentes.

Uma pequena ajuda: Anotações

Por fim, você pode ter um controle realmente refinado da construção do objeto usando Annotations. As anotações da Jackson são poderosas. Uma descrição completa está além do escopo deste blog. Você pode ler um bom guia que as descreve aqui.

POJO (Plain Old Java Objects)1

Para ajudar no uso das Anotações, achei útil começar com uma classe base. Aqui está o código.

A primeira anotação @JsonInclude(Include.NON_NULL) instrui Jackson a ignorar os campos nulos (ou seja, coisas que estão faltando nos dados).

As próximas três anotações, juntamente com o código, permitem que a Jackson manipule quaisquer campos não especificados. A Jackson preencherá alegremente qualquer coisa que você não tenha informado no mapa additionalProperties. Isso significa que você pode alterar os dados sem se preocupar com a possibilidade de o código explodir. Não é preciso dizer que isso pode permitir que erros reais passem despercebidos, portanto, use com cautela!

Por fim, caso você queira evitar fazer isso sozinho, aqui está um link para uma ferramenta que pode ajudar a automatizar a anotação de classes: http://www.jsonschema2pojo.org/

Nota final

Atualmente, o Couchbase Lite usa o Jackson internamente. Muitas pessoas recomendariam não que dependem disso. Eu indico isso caso você se depare com conflitos de biblioteca ou outros problemas.

Pós-escrito

Confira mais recursos em nosso portal do desenvolvedor e nos siga no Twitter @CouchbaseDev. Você pode postar perguntas em nosso fóruns. E participamos ativamente de Estouro de pilha.

Você pode me seguir pessoalmente em @HodGreeley

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Hod Greeley, Advogado do desenvolvedor, Couchbase

Hod Greeley é um defensor dos desenvolvedores da Couchbase e mora no Vale do Silício. Ele tem mais de duas décadas de experiência como engenheiro de software e gerente de engenharia. Trabalhou em diversas áreas de software, incluindo física e química computacional, segurança de computadores e redes, finanças e dispositivos móveis. Antes de ingressar na Couchbase em 2016, Hod liderou as relações com desenvolvedores para dispositivos móveis na Samsung. Hod é Ph.D. em física química pela Universidade de Columbia.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.