O documento apresenta o framework Realm para banco de dados no Android, explicando suas vantagens como evitar código SQL e foco na linguagem de programação, limitações como acoplamento forte com a API e impossibilidade de passar objetos entre activities, e como configurar, modelar dados, realizar consultas e gravações no banco.
2. Motivação
Evitar código SQL na aplicação.
Foco apenas na linguagem de programação utilizada.
Banco de dados criado especificamente para mobile.
3. Limitações
Acoplamento forte com a API (Nossas entidades devem estender RealmObject
para serem persistidas).
Impossibilidade de passar RealmObject via Bundle.
Não é possível a construção de chaves compostas.
Não há compatibilidade com atributos final, volatile e transient.
Não existe auto AUTO_INCREMENT para chave primária.
6. No arquivo build.gradle do projeto
adicione as seguintes linhas:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'io.realm:realm-gradle-
plugin:3.0.0'
}
}
7. E no build.gradle do módulo da
aplicação, adicione:
apply plugin: 'realm-android'
8. Modelando
Com o Realm não temos mais o conceito
de tabelas, e sim Models. Essas classes é
que serão persistidas em nosso banco.
Para que tenhamos uma Model persistivel,
basta estendermos de RealmObject.
9. Modelando
Nossa classe deve ser um Javabean, com construtor padrão, getters e setters.
Caso você crie algum construtor customizado, lembre de adicionar o construtor
default.
10. Modelando
Nos atributos do nosso Model, podemos usar algumas annotations para indicar
alguns comportamentos.
@Required indica que o campo não pode ser nulo;
@Index indica que o campo será indexado;
@PrimaryKey indica uma chave primária;
@Ignore indica que o campo não será persistido em disco.
11. Relacionamentos
Temos duas maneiras de representar relacionamentos entre objetos. A primeira é
inserindo um atributo com tipo de outro objeto (deve também estender
RealmObject), e a outra maneira é inserindo um atributo que represente uma lista
de objetos.
Com isso conseguimos atender relacionamentos do tipo One to One, One to
Many e Many to Many.
12.
13. Gravando no banco
O Realm, assim como vemos em ORMs, trabalha com contexto de transação.
O que isso significa ?
Resumidamente, significa que dentro de determinado escopo, todas as
alterações feitas em um objeto serão persistidas no banco de dados.
Obs: Mesmo conceito Atomicidade se aplica aqui.
15. Gravando no banco
Note que antes de abrirmos uma transação devemos obter uma instância de
Realm através da chamada Realm.getDefaultInstance();
Para isso, temos que criar nossa classe que estende Application, e que crie a
configuração default do Realm. Abaixo segue exemplo:
18. Realizando consultas
O Realm possui uma API para querys (RealmQuery) bem semântica, e que aplica
o conceito de programação fluente. Onde eu vou dando append nos comandos
que eu quero realizar. Isso é uma das vantagens em cima de Strings SQL. Ex:
19. Chega de papo, vamos para o MVP ?
O que é ? Produto mínimo viável.
Para que serve ? Validar seu modelo de negócio, e começar a ter os primeiros
feedbacks do mercado.
Obter o aprendizado validado, e seguir o fluxo Construir > Mensurar >
Aprender. (Eric Ries - Lean Startup).
20. Chega de papo, vamos para o MVP ?
O que é ? Produto mínimo viável.
Para que serve ? Validar seu modelo de negócio, e começar a ter os primeiros
feedbacks do mercado.
Obter o aprendizado validado, e seguir o fluxo Construir > Mensurar >
Aprender. (Eric Ries - Lean Startup).