Desenvolvi um framework para orm no Android (é eu sei já existem alguns muito bons por sinal, so que no meus projetos eu buscava soluções o menos intrusivas possível e terminei chegando à conclusão de que era melhor eu desenvolver minha propria solução.).
Com o h4Android você não precisa extender suas classes de nenhuma interface, nem seguir “receita de bolo”, você simplemente cria suas classes no estilo POJO e usa as anotações.
Vamos ao tutorial:
Objetivo
Neste tutorial tenho o intuito de apresentar o usuário a uma simples utilização do framework para criar uma base de forma dinâmica baseado no modelo mapeado, bem como um pequeno exemplo de persistência baseado num objeto pertencente à uma classe mapeada.
1º Crie um novo projeto Android no Eclipseb
- Informe o nome do projeto como testh4a.
- Informe a versão que deseja utilizar Android 2.2.
- Informe o nome do pacote br.org.h4a.test, neste ponto você já pode finalizar a criação do projeto;
2º Acesse a página do projeto no em http://code.google.com/p/h4android/, vá na aba Downloads e baixe o arquivo h4android_2_2-0.0.0.1.jar. Salve numa pasta de sua preferência.
3º De posse da biblioteca h4android_2_2 selecione seu projeto clique no botão direito do mouse e selecione a opção propriedades, selecione a opção Java Build Path, na aba Libraries clique em Add External JARs… localize a biblioteca h4android_2_2, em seguida clique no botão OK.
4º Bem neste ponto sua aplicação já está apta a utilizar o framework. Vamos lá então:
Crie um pacote qualquer no seu projeto para inserir as classes que devem ser mapeadas como entidade no banco de dados, eu criei um pacote com o seguinte nome br.org.h4a.test.model.
Dentro deste pacote vamos uma classe para utilizar no nosso exemplo. Crie a classe Contato com o seguinte conteúdo
package br.org.h4a.test.model; public class Contato { private Integer id; private Integer version; private String nome; private String telefone; private String celular; private String email; }
Assim que concluirmos o mapeamento desta classe não esqueça de criar os métodos get e set de cada atributo.
Vamos ao mapeamento então:
package br.org.h4a.test.model; @Entity @Table("TBL_CONTATO_") public class Contato { @Id private Integer id; @Version private Integer version; @Column(name = "_NOME", length = 50, allowNulls = false, typeColumn = TypeColumn.VARCHAR) private String nome; @Column(name = "_TELEFONE", length = 14, allowNulls = false, typeColumn = TypeColumn.VARCHAR) private String telefone; @Column(name = "_CELULAR", length = 14, typeColumn = TypeColumn.VARCHAR) private String celular; @Column(name = "_EMAIL") private String email; }
A explicação detalhada de cada anotação esta no documento na página do projeto.
Bem, agora basta criar os métodos get e set dos atributos.
6º Agora vamos por o h4Android para funcionar, iremos fazer uma chamada simples para inserir um objeto do tipo Contato.
Abra a classe Testh4aActivity esta é a activity principal da aplicação (aliás a única!!). Logo após a linha que contem o código setContentView, vamos começar os testes do framework.
Digite as seguintes linhas:
//********************************************************************** PersistenceManagerA22 pm = null; List<String> classes = new ArrayList<String>(); classes.add("br.org.h4a.test.model.Contato"); try { pm = new PersistenceManagerA22( /*contexto para conexão*/ this, /*nome para a base de dados*/ "base_da_aplicacao_testh4a.db", /*versao da base de dados*/ 1000, /*lista string com as entidades*/ classes , /*modo de conexão do android*/ Context.MODE_PRIVATE, /*modo de conexao do framework*/ ModelBeavior.RENEW, /*habilita o log do framework*/ 1 ); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } //**********************************************************************
Bem a partir deste ponto podemos simplesmente criar um objeto do tipo Contato setar algumas informações e usar o método insert do PersistenceManagerA22 pm.
Inclua em seguida o seguinte trecho de código:
Contato contato = new Contato(); contato.setVersion(1000); contato.setNome("Carlos Timoshenko"); contato.setTelefone("85 0000 0000"); contato.setEmail("carlostimoshenkorodrigueslopes@gmail.com"); // Neste ponto quando o framework tentar inserir o objeto contato, será // detectado que a base ainda nao existe e h4android ira gerar o ddl da // base e gerar a mesma do "zero". // Como o log esta ativado poderemos ver o feedback do framework criando // as tabelas e inserindo um objeto do tipo Contato pm.insert(contato); pm.close();
Bem agora é só por a aplicação para rodar e acompanhar o LogCat no Eclipse mostrando as mensagens do h4Android.
Quando você por sua aplicação para rodar o h4android tentará persistir um objeto do tipo Contato, como a base de dados não existe então o framework gera o DDL do seu banco e cria para você, além de inserir o objeto de forma transparente.
Você pode copiar esta banco de dados SQLite que foi criado no emulador para o seu pc e acessar diretamente pelo console usando o cliente do próprio SQLite o sqlite3 e dar um “select * from TBL_CONTATO_;” para confirmar o objeto inserido.
Bem espero que esta ferramenta lhes seja útil, adianto que a mesma se encontra em uso pois atende ao basico de um crud, porém ja estou desenvolvendo novas funcionalidades. Coloco-em à disposição para eventuais dúvidas.
Boa tarde.
Fonte: Timoshenko/PortalAndroid