Iniciando com realm

25
Iniciando com Realm Criando seu MVP de sucesso

Transcript of Iniciando com realm

Page 1: Iniciando com realm

Iniciando com RealmCriando seu MVP de sucesso

Page 2: Iniciando com realm

Motivação

Evitar código SQL na aplicação.

Foco apenas na linguagem de programação utilizada.

Banco de dados criado especificamente para mobile.

Page 3: Iniciando com realm

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.

Page 4: Iniciando com realm

Instalação

Page 5: Iniciando com realm

Pré requisitos

Android Studio 1.5.1 ou superior.

JDK versão 7.0 ou superior.

Android API Level 9 ou superior.

Page 6: Iniciando com realm

No arquivo build.gradle do projeto adicione as seguintes linhas:

buildscript { repositories { jcenter() } dependencies { classpath 'io.realm:realm-gradle-plugin:3.0.0' }}

Page 7: Iniciando com realm

E no build.gradle do módulo da aplicação, adicione:

apply plugin: 'realm-android'

Page 8: Iniciando com realm

ModelandoCom 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.

Page 9: Iniciando com realm

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.

Page 10: Iniciando com realm

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.

Page 11: Iniciando com realm

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.

Page 12: Iniciando com realm
Page 13: Iniciando com realm

Gravando no bancoO 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.

Page 14: Iniciando com realm

Gravando no banco

Page 15: Iniciando com realm

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:

Page 16: Iniciando com realm

Gravando no banco

Page 17: Iniciando com realm

Gravando no bancoAbaixo alguns exemplos de gravação de objetos no banco.

Page 18: Iniciando com realm

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:

Page 19: Iniciando com realm

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).

Page 20: Iniciando com realm

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).

Page 21: Iniciando com realm

Tem mais ?Para onde ir ?

Page 22: Iniciando com realm

Realm

Migrations. https://realm.io/docs/java/latest/#migrations

Transações assíncronas. https://realm.io/docs/java/latest/#asynchronous-transactions

RxJava. https://realm.io/docs/java/latest/#rxjava

Testes. https://realm.io/docs/java/latest/#testing-and-debugging

Parceler. https://realm.io/docs/java/latest/#parceler

Page 23: Iniciando com realm

Startup e Empreendedorismo

https://cubo.network/eventos

https://www.campus.co/sao-paulo/pt/events

https://oxigenioaceleradora.com.br/eventos/

https://www.amazon.com.br/Startup-Enxuta-Eric-Ries-ebook/dp/B00A3C4GAK

https://startupi.com.br/

https://endeavor.org.br/

Page 24: Iniciando com realm

Referências

https://realm.io/docs/java/latest/

http://www.thiengo.com.br/persistencia-de-dados-com-realm-no-android-parte-1

https://medium.com/android-dev-br/inicia%C3%A7%C3%A3o-ao-realm-b7624e380194

https://endeavor.org.br/mvp/

Page 25: Iniciando com realm

Obrigado!https://github.com/Turbiani/

https://goo.gl/pkXEXB’

[email protected]