SlideShare uma empresa Scribd logo
1 de 25
Iniciando com Realm
Criando 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'
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.
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 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.
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 banco
Abaixo 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.br
www.cotabox.com.br

Mais conteúdo relacionado

Mais procurados

Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOP
elliando dias
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State API
Vinícius Thiengo
 
Introdução ao Adobe Flex
Introdução ao Adobe FlexIntrodução ao Adobe Flex
Introdução ao Adobe Flex
Rafael Nunes
 
Trabalhando Análise Qualitativa em seu Aplicativo Android
Trabalhando Análise Qualitativa em seu Aplicativo AndroidTrabalhando Análise Qualitativa em seu Aplicativo Android
Trabalhando Análise Qualitativa em seu Aplicativo Android
Vinícius Thiengo
 
True Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no AndroidTrue Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no Android
Vinícius Thiengo
 

Mais procurados (19)

Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOP
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State API
 
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformaTDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
 
API testing - Pq a vida não é só ID's, Css, Xpath...
API testing - Pq a vida não é só ID's, Css, Xpath...API testing - Pq a vida não é só ID's, Css, Xpath...
API testing - Pq a vida não é só ID's, Css, Xpath...
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
O que esperar do Zend Framework 2
O que esperar do Zend Framework 2O que esperar do Zend Framework 2
O que esperar do Zend Framework 2
 
Introdução ao Adobe Flex
Introdução ao Adobe FlexIntrodução ao Adobe Flex
Introdução ao Adobe Flex
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
Trabalhando Análise Qualitativa em seu Aplicativo Android
Trabalhando Análise Qualitativa em seu Aplicativo AndroidTrabalhando Análise Qualitativa em seu Aplicativo Android
Trabalhando Análise Qualitativa em seu Aplicativo Android
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
ASP.NET MVC para desenvolvedores Web Forms (TechEd)ASP.NET MVC para desenvolvedores Web Forms (TechEd)
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESB
 
True Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no AndroidTrue Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no Android
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.js
 
Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Sessao2
Sessao2Sessao2
Sessao2
 
Sessao2 ASP
Sessao2 ASPSessao2 ASP
Sessao2 ASP
 

Semelhante a Iniciando com realm

Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI Android
Vinícius Thiengo
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
Frederico Maia Arantes
 

Semelhante a Iniciando com realm (20)

CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
Palestra
PalestraPalestra
Palestra
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento web
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI Android
 
Segurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasSegurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheiras
 
Spring roo produtividade no java
Spring roo produtividade no javaSpring roo produtividade no java
Spring roo produtividade no java
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Aula1
Aula1Aula1
Aula1
 
Grails
GrailsGrails
Grails
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
Hello ReactJs
Hello ReactJsHello ReactJs
Hello ReactJs
 
Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011
 
Conhecendo o Ruby on Rails
Conhecendo o Ruby on RailsConhecendo o Ruby on Rails
Conhecendo o Ruby on Rails
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 

Iniciando com realm