Iniciando com realm

Post on 15-Apr-2017

24 views 0 download

Transcript of Iniciando com realm

Iniciando com RealmCriando seu MVP de sucesso

Motivação

Evitar código SQL na aplicação.

Foco apenas na linguagem de programação utilizada.

Banco de dados criado especificamente para mobile.

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.

Instalação

Pré requisitos

Android Studio 1.5.1 ou superior.

JDK versão 7.0 ou superior.

Android API Level 9 ou superior.

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

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

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

apply plugin: 'realm-android'

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.

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.

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.

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.

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.

Gravando no banco

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:

Gravando no banco

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

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:

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

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

Tem mais ?Para onde ir ?

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

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/

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/

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

https://goo.gl/pkXEXB’

turbiani@cotabox.com.brwww.cotabox.com.br