E aew galera, tranquilo?

Hoje vou falar um pouco sobre o Sugar ORM que é uma biblioteca que abstrai o acesso ao banco de dados SQLite e que implementa a técnica de mapeamento objeto relacional, tornando simples a tarefa de manipular dados de forma persistente.

São trechos de um artigo que publiquei no passado. Sendo assim, curte ai 🙂

Introdução

Comumente as aplicações Android necessitam persistir grandes quantidades de dados nos dispositivos. Quando estes dados são estruturados, como por exemplo a informação de contato do usuário contendo números telefônicos e endereço, é ideal a utilização de banco de dados.

O Android suporta nativamente o SQLite, um banco de dados mínimo, relacional, adequado para o uso em sistemas embarcados e que não necessita de configuração. A biblioteca disponível no SDK conta com as classes necessárias para permitir a execução de comandos em SQL, a manipulação de um banco, a inserção, a atualização e a exclusão de registros das tabelas, porém todo o mapeamento dos objetos para os registros das tabelas e dos registros para os objetos fica a cargo do programador. Visando reduzir a quantidade de código que deve ser escrito para obter ou salvar os dados de um objeto na tabela correspondente, os programadores podem optar por utilizar a técnica de mapeamento objeto relacional.

Mapeamento objeto relacional (ORM, do inglês Object-relational mapping) é uma técnica de programação que cria uma abstração de banco de dados orientado a objeto sobre um banco de dados relacional, como ilustrado na Figura 1, permitindo que o programador persista os objetos das suas classes da camada de modelo sem a necessidade de escrever comandos em SQL e de converter manualmente os atributos dos objetos em colunas das tabelas. Para Android existem algumas bibliotecas ORM disponíveis, dentre elas destacam-se greenDAO, OrmLite, ActiveAndroid e Sugar ORM.

Sugar ORM é uma biblioteca ORM para Android projetada e mantida por Satya Narayan. No momento da elaboração deste artigo, o projeto totalizava 58 colaborações em um universo de 480 repositórios originados a partir do Sugar ORM no GitHub.
O objetivo deste artigo é apresentar rapidamente o Sugar ORM.

 

Instalação

Para instalar a biblioteca Sugar ORM em um projeto no Android Studio, é necessário apenas adicionar a seguinte linha ao arquivo build.gradle, do módulo app, na seção dependencies:

Após incluir a linha a cima, devemos sincronizar os arquivos do Gradle acessando o menu Tools → Android → Sync Project with Gradle Files.

 

Configuração

Para configurar o Sugar ORM para utilização é necessário apenas alterar o arquivo AndroidManifest.xml, especificando a classe SugarApp como a classe da aplicação. Opcionalmente, quatro tags de metadados podem ser incluídas naquele mesmo arquivo e servem aos seguintes propósitos:
• DATABASE: Nome do arquivo sqlite utilizado. Exemplo: meu_banco.db;
• VERSION: Versão do esquema do banco de dados (utilizada na migração);
• QUERY_LOG: Indica se deve ou não logar os comandos de Select (utilizado durante o desenvolvimento);
• DOMAIN_PACKAGE_NAME: Nome do pacote onde estão as classes de domínio. Ajuda o Sugar ORM na busca por modelos que devem ser transformados em tabelas.

 

Utilização

Para que os objetos de uma classe possam ser persistidos no banco de dados esta precisa herdar da classe SugarRecord. A biblioteca cuida do restante, criando inclusive a tabela com as colunas e tipos necessários.

O construtor padrão das classes de domínio deve ser mantido para que o Sugar ORM possa construir os objetos a partir das informações presentes no banco. Um detalhe a ser observado é que a biblioteca acessa os atributos dos objetos por reflexão, por isso qualquer regra inserida nos métodos de get que possa modificar os valores não será refletida nos dados persistidos.

A classe Autor dará origem à tabela autor com as colunas nome e sobre_nome. Perceba que o Sugar ORM converte o o identificador do atributo no padrão camelCase para um identificador que utiliza underline.
O Sugar ORM reconhece diversos tipos de atributos, incluindo Integer, Long, Float, Double, BigDecimal, Boolean, String, Timestamp, Date e Calendar, além de objetos de outras classes que herdem de SugarRecord.

Caso seja desejável ignorar e não persistir determinado atributo, podemos anotá-lo com @Ignore. Outras anotações que podem ser utilizadas nos atributos são:
• @Column: Permite modificar o identificador da coluna que representará o atributo;
• @NotNull: Indica que o atributo não poderá ser persistido com valor nulo;
• @Unique: Indica que o valor daquele atributo não poderá existir em nenhum outro registro. Exemplo: número do CPF.

Sugar ORM utiliza o padrão de projeto active record, ou seja, os próprios objetos das classes de domínio possuem métodos para inserção, atualização e remoção. Acompanhe um exemplo de uso básico da biblioteca para persistência de um objeto do tipo Autor. Este exemplo também apresenta como realizar uma listagem de todos os registros persistidos no banco.

 

Conclusão

Fácil não é? Foi apresentado a instalação e configuração do Sugar ORM em um projeto Android, além das funcionalidades mais básicas: inserção e busca de dados.

Se você está iniciando o desenvolvimento de uma aplicação que vai persistir informação em banco de dados, o Sugar ORM é uma excelente opção e vai demandar um esforço baixíssimo para sua utilização. Se você tem uma aplicação cuja camada de modelo está implementada com a API nativa, o Sugar ORM também é uma ótima opção se você está estudando refatorá-la.

Para consultas avançadas, atualização e remoção de dados e outras operações, acesse: http://satyan.github.io/sugar/

Lembre-se de analisar e estar de acordo com a licença de todas as bibliotecas de terceiros que você for utilizar em seus projetos.

 

Trechos do artigo Persistindo dados com o SugarORM para a revista DevMedia, escrito por: Josias Paes e Eduardo Carneiro