ORMLite no Android, Entendendo e Utilizando

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Android /ORMLite no Android, Entendendo e Utilizando

ORMLite no Android, Entendendo e Utilizando

Vinícius Thiengo
(7836) (13)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloManual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas
CategoriaEngenharia de Software
Autor(es)Gene Kim, Jez Humble, John Willis, Patrick Debois
EditoraAlta Books
Edição
Ano2018
Páginas464
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

Opa! Blz?

Nesse vídeo mostro um exemplo de como utilizar a lib ORMLite no Android para facilitar o mapeamento de nossos objetos na API de persistência do Android, no caso o SQLite. O ORMLite é uma entidade ORM (Object Relational Mapping) Java, para utilizá-lo no Android precisamos importar apenas dois arquivos simples .jar e então começar com as extensões e as respectivas annotations, alias igualmente em JPA, se você conhecer bem as annotations do ORMLite você melhora em muito o conhecimento de como utilizar essa lib, pois o mapeamento está mesmo ligado a forma de utilizar as annotations.

Note que é possível também chamar os dados da base utilizando uma SQL direta feita na mão, mesmo essa não sendo a ideia da utilização de uma entidade ORM. Fique atento que a maneira utilizada no vídeo é apenas uma das possíveis formas de utilização do ORMLite no Android, pois com uma simples pesquisa é possível encontrar várias outras maneiras de implementar a lib. Fato lembrar que vale muito a leitura da documentação no site da ORMLite, pois como falei no vídeo, ela é pequena e bem explicativa. Então é isso, vou evitar mais delongas e deixar você assistir ao vídeo.

O link para download do projeto se encontra logo abaixo.

Segue link do vídeo do SQLite que lhe ajudará melhor na compreensão do vídeo acima:

SQLite no Android, Entendendo e Utilizando

Segue links da lib ORMLite apresentados no vídeo:

Página principal da lib ORMLite

Página de download dos .jar da lib ORMLite

Vlw.

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

APP Android: Thiengo [Calopsita] 2.0 BetaAPP Android: Thiengo [Calopsita] 2.0 BetaAndroid
LinkedIn Login com SocialAuth Library no AndroidLinkedIn Login com SocialAuth Library no AndroidAndroid
Volley no Android, Entendendo e UtilizandoVolley no Android, Entendendo e UtilizandoAndroid
ImageLoader Com a Lib Volley no AndroidImageLoader Com a Lib Volley no AndroidAndroid

Compartilhar

Comentários Facebook

Comentários Blog (13)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
11/10/2015
e esse easter egg do minecraft na pasta raw? aiuhaiuah =]
Responder
marcelo (1) (0)
02/08/2015
Flar Thiego!

Hoje me bateu uma dúvida, você utiliza alguma ferramenta ORM, ou melhor voce recomenda a utilização ?
Responder
Vinícius Thiengo (0) (0)
03/08/2015
Fala Marcelo, blz?
Na verdade não utilizo, nem no backend Web nem no APP, mas sei que se que se eu aceitasse a curva de aprendizado de alguma dessas libs provavelmente a produção (quando falando de base de dados) seria maior. Dê uma olhada nessas opções para Android (https://android-arsenal.com/search?q=sqlite ), a quantidade de forks, seguidores e tempo / quantidade de atualizações podem lhe dizer mt sobre uma lib boa ou não para base de dados. Abraço
Responder
21/07/2015
Beleza Thiengo! Sou novo em programação, e curto muito os seus videos. Mas então, quando você insere os dados pela MainActivity toda vez que iniciar a aplicação esses dados vão ser inseridos no BD novamente? E se sim, como posso fazer para inserir apenas uma vez? ( na primeira vez q abrir a aplicação por exemplo)
Responder
Vinícius Thiengo (0) (0)
22/07/2015
Fala Gustavo, blz sim.
Bom, não me lembro mt bem do vídeo por completo, mas meu objetivo nele foi apenas apresentar as funcionalidades, logo, sim, se entrar novamente na Activity os dados serão inseridos novemente, duplicando o conteúdo. A solução é lógica de programação, seu script antes de inerir vai buscar os dados do SQLite, se forem retornados, isso indica que não deve inserir, pois esses já estão lá. Um if() resolve isso. Abraço
Responder
07/05/2015
Fala Thiengo,
Seu blog está me ajudando bastante meu amigo! Obrigado.

Atualmente você continua trabalhando com o ORMLite em seus apps? Andei pesquisando e vi que existem vários ORMs disponiveis para android por ai. Conhece algum outro que não seja o ORMLite? Muita gente usa o green e o sugar? O que acha deles?
Abraços!
Responder
Vinícius Thiengo (0) (0)
08/05/2015
Fala Gabriel, blz?
Hj utilizo o SQLite direto, pois mtas dessas libs são apenas interfaces para facilitar o uso do SQLite, não que sejam ruins, pois não são, mas ainda prefiro o SQLite direto, por exemplo, será que seria fácil utilizar o FTS3 do SQLite para buscas locais no Android, porém utilizando uma dessas libs? Ese tipo de coisa que me deixa um pouco com o pé para trás com elas. Já ouvi falar do green, mas nunca o utilizei. Abraço
Responder
Gabriel (0) (0)
23/02/2015
Thiengo, nesse projeto você criou as classes Student e Disciplina e dá pra ver quantas disciplinas cada estudante tem. Se no caso eu quiser por exemplo organizar uma lista em ordem alfabética de estudantes, e saber quais disciplinas cada um faz (que é o que você já faz) mas também quiser organizar por ordem alfabética das disciplinas e saber quais estudantes as fazem como faria? Bastaria colocar Collection de Students em Disciplina? Obrigado pelos vídeos, tem ajudado bastante! Vlw!
Responder
Vinícius Thiengo (0) (0)
28/02/2015
Fla Gabriel, blz? Desculpe a demora, mas dê uma olhada nos scripts abaixo, no caso uma é para trazer os students e as disciplinas cursadas por cada um, no outro caso é para trazer as disciplines e os respectivos students. Pode rodar no mesmo script de exemplo desse vídeo. Dê uma pesquisada em GROUP BY e ORDER BY em SQL. Abraço
// STUDENTS
                Log.i("Script", " ");
                Log.i("Script", "-------------- STUDENTS --------------");
                GenericRawResults raw = studentDao.queryRaw("SELECT student.id, student.name, discipline.name dname, discipline.code FROM student INNER JOIN discipline GROUP BY student.id, student.name, discipline.name, discipline.code ORDER BY student.name ASC, discipline.name ASC", new RawRowMapper(){
                    @Override
                    public Student mapRow(String[] columnNames, String[] results) throws SQLException {
                        Student s = new Student(Integer.parseInt(results[0]), results[1]);
                        s.setDisciplines(new ArrayList());
                        s.getDisciplines().add(new Discipline(results[2], results[3]));
                        return s;
                    }

                });
                long i = 0, id = -1;
                for(Student student : raw){
                    long auxId = student.getId();
                    if(auxId == id){
                        ArrayList disciplines = (ArrayList) student.getDisciplines();
                        Log.i("Script", "--> Discipline: "+disciplines.get(0).getName()+" ("+disciplines.get(0).getCode()+")");
                    }
                    else{
                        Log.i("Script", "Student: "+student.getName());
                        ArrayList disciplines = (ArrayList) student.getDisciplines();
                        Log.i("Script", "--> Discipline: "+disciplines.get(0).getName()+" ("+disciplines.get(0).getCode()+")");
                        id = student.getId();
                    }
                }

            // DISCIPLINES
                Log.i("Script", " ");
                Log.i("Script", "-------------- DISCIPLINES --------------");
                GenericRawResults rawD = studentDao.queryRaw("SELECT DISTINCT discipline.id, discipline.name dname, discipline.code, student.id, student.name FROM student INNER JOIN discipline GROUP BY discipline.id, discipline.name, discipline.code, student.id, student.name ORDER BY discipline.name ASC, student.name ASC", new RawRowMapper(){
                    @Override
                    public Discipline mapRow(String[] columnNames, String[] results) throws SQLException {
                        Discipline d = new Discipline(results[1], results[2]);
                        d.setId(Long.parseLong(results[0]));
                        Student s = new Student(Integer.parseInt(results[3]), results[4]);
                        d.setStudent(s);
                        return d;
                    }

                });
                i = 0;
                id = -1;
                for(Discipline discipline : rawD){
                    long auxId = discipline.getId();
                    if(auxId == id){
                        Log.i("Script", "--> Student: "+discipline.getStudent().getName());
                    }
                    else{
                        Log.i("Script", "Discipline: "+discipline.getName()+" ("+discipline.getCode()+")");
                        Log.i("Script", "--> Student: "+discipline.getStudent().getName());
                        id = discipline.getId();
                    }
                }
Responder
28/11/2014
Fala Thiengo! Blz!? Eu implementei ORMLite em um projeto, mas usei JPA. Algum problema nisso? Meu evento onUprade() não está sendo chamado quando eu incremento a versão do BD no DataBaseHelper.
Responder
Vinícius Thiengo (0) (0)
29/11/2014
Fala Carlos, blz?
Show de bola, estou sabendo agora que o JPA roda com Android tb. Bom, então tem problema, pois o onUpgrade() não foi chamado! Mas chama-lo na mão é tranquilo se vc salvar a versão do bd em um SharedPreferences para realizar a comparação se é ou não uma nova versão rodando. Vc deu uma olhada aqui:

https://code.google.com/p/jpa-android/

Abraço
Responder
01/12/2014
Na verdade o negocio do onUpgrade() está intermitente. Ele voltou a funcionar quando eu limpei todos os dados do app do meu celular (o que eu uso para depurar os projetos). Agora está sem problemas.
Responder
Vinícius Thiengo (0) (0)
02/12/2014
Hum... Blz Carlos, só como ressalva, quando vc atualiza algo da estrutura de seu bd ou até mesmo quer iniciar os dados novamente, para utilizar o onUpgrade() a versão do bd tem de ser incrementada, senão somente apagando o bd do device e rodando a APP novamente para funcionar. Abraço
Responder