Mobile

18 jan, 2019

O X do Xamarin Forms – Realm

Publicidade

Fala, galera!

Hoje venho falar um pouco sobre um banco de dados incrível e muito rápido: o Realm.

Realm

Realm é um banco de dados móvel, projetado para o mundo mobile. Ele é uma ótima alternativa ao SQLite, inclusive minha primeira escolha ao invés do SQLite.

Conheci o Realm através de um amigo no trabalho, onde o mesmo utilizou ele com Swift em seu APP iOS. Sim, o Realm não é exclusivo para Xamarin – ele suporta também iOS e Android.

Uma vantagem em cima do SQLite é que não é necessário escrever código específico para cada plataforma para carregar o Realm. Incluindo o pacote via Nuget em todos os projetos está pronto para usar.

Vale a pena? É confiável?

Além de, na minha opinião (e a de todo mundo que usa), ser mais muito mais rápido que o SQLite, ele também é utilizado por algumas “pequenas” (sarcasm = true;) empresas:

Empresas “pequenas” que utilizam o Realm

É simples de usar?

Um exemplo do próprio site:

Linq! Linq! Linq!

É pago? A versão Developer é gratuita.

Outros valores e diferenças de versões você pode consultar neste link.

Mas chega de papo introdutório – vamos colocar a mão na massa e demonstrar um pouco da implementação do Realm.

Vamos criar um projeto Cross-Platform > Blank Xaml App:

Figura 1

Agora, no bom e velho nuget, vamos selecionar o Realm e instalar em todos os projetos:

Figura 2

Certo! Agora o ambiente está montado, mas como o Realm trabalha?

Primeiro, é importante saber q o Realm implementa o IDispose(), ou seja, as instâncias serão fechadas automaticamente (limpas, eliminadas mesmo) quando as variáveis saírem do escopo.

Figura 3

Crie uma pasta Model no projeto (Project > New Folder) e a seguir crie a classe Porco.cs (meus exemplos têm referências com minha vida) conforme mostra a Figura 3.

Estamos usando o namespace “using Realms” para que a classe possa herdar de RealmObject.

Qualquer objeto que você queira criar, basta herdar de RealmObject..

Só existe uma restrição: você só pode usar um objeto na thread na qual ele foi criado, ou seja, você não pode passar o objeto para outra thread, então, cuidado!

Como o Realm trabalha diretamente com objetos, não precisamos de um ORM. Podemos usar Linq!

É possível criar transações de duas formas:

Na figura abaixo vemos um método de uma transação que implementa IDispose, e você tem que dar o commit ou ela será cancelada:

Figura 4

A transação implícita será comitada por padrão:

Figura 5

Para excluir um objeto, basta usar o método Realm.Remove dentro de uma transação:

Figura 6

Para listar basta utilizar o Linq:

Figura 7

Como podem ver, é o bom e velho linq, não tem segredo! Este banco possui uma curva de aprendizado bem simples!

Alguns links úteis:

São exemplos simples, mas da para ter uma ideia de como funciona o Realm. Espero ter ajudado.

Aquele abraço!