O X do Xamarin Forms — Realm

Fala Galera,

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

Realm é um banco de dados móvel, que foi 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 esta pronto para usar.

Vale a pena e é confiável ?

Alem de na minha opinião (e a de todo mundo que usa) ser mais muito mais rápido que o SQLLite, 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 aqui


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

Figura 1

Vamos criar um projeto Cross-Platform -> Blank Xaml App. (Figura 1)

Figura 2

Agora vamos no Bom e velho nuget Selecionar o Realm e instalar em TODOS os projetos. (Figura 2)

Certo! Agora o Ambiente esta montado, mas como o Realm trabalha?

Primeiro é importante saber q o Realm implementa o IDispose(), ou seja as instancias serão fechadas automaticamente (Limpas,Mortas 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 tem referencias com minha vida :P) 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 2 formas:

Figura 4

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

Figura 5

Na figura 5 a transação implícita será comitada por padrão.

Figura 6

Para excluir um objeto basta usar o método Realm.Remove (Figura 6) dentro de uma transação.

Figura 7

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!