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