Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Desenvolvimento de GenericDAO em Android

Guilherme, já tem esses DAOs implementados? Se não tiver eu sugiro usar um ORM também, pela quantidade de classe pra persistir, vai te ajudar bastante.


2014-02-28 15:57 GMT-03:00 Vinicius Oliveira <nickzaoo@gmail.com>:

Já tem feito tudo isso mano
http://ormlite.com/sqlite_java_android_orm.shtml

http://greendao-orm.com

On Feb 28, 2014 3:01 PM, "Guilherme Bernardi" <gui.bernardi09@gmail.com> wrote:
Pessoal, boa tarde.

Gostaria de saber se alguém já chegou a implementar e utilizar um GenericDAO no Android.

Confesso que não possuo um conhecimento aprofundado em Java Generics, mas para evitar a repetição de DAO's (que no total chegariam a 12) que teria em meu projeto comecei a tentar desenvolver um GenericDAO, mas estou com dificuldades para implementar determinados conceitos. Venho me baseando nos conceitos voltados ao uso do Hibernate, até porque não achei conteúdo referente as implementações e adaptações propriamente ditas para o Android.

Desenvolvi uma interface que define os métodos de minha GenericDAO.

E então eu tenho minha GenericDAOImpl onde são implementados todos os métodos responsáveis por utilizar a camada de banco de dados para persistir os dados.

Só que estou tendo algumas dúvidas, no caso minha classe VO por exemplo PessoaVO, ela seria apenas o escopo mesmo do Objeto. E eu teria uma interface para cada VO por exemplo PessoaDAO que essa sim herdaria meu GenericDAO?
Com isso através dessas interfaces DAO, eu conseguiria adaptar meu GenericDAO de acordo com o objeto que eu estou trabalhando.

Um outro problema que tive com Generics, é a respeito por exemplo do retorno de Listas para utilização em um Adapter.
Utilizando o conceito que estou acostumado, eu faria mais ou menos dessa maneira:

public List<PessoaVO> lista() {

List<PessoaVO> lista = new ArrayList<PessoaVO>();
SQLiteDatabase db = new DBHelper(ctx).getWritableDatabase();
Cursor c = db.query(table_name, colunas, null, null, null, null, null);

while (c.moveToNext()) {
PessoaVO pessoa = new PessoaVO();
pessoa.setId(c.getInt(c.getColumnIndex("id")));
pessoa.setNome(c.getString(c.getColumnIndex("nome")));
lista.add(pessoa);
}

return lista;
}

Mas comecei a tentar implementá-la dentro de um GenericDAO e tive várias dúvidas, por exemplo com faria o retorno e conversão de uma Lista da mesma maneira que acima? Tive problemas para transformar o Cursor em um tipo que pudesse ser colocado em List e ser retornado, já que não consegui e pelo que li e pesquisei não é possível obter uma instancia do objeto para fazer seu retorno dessa maneira. Segue abaixo implementação até onde parei:

public List<T> listar(String[] campos) {
Dados conn = new Dados(context);
//List<?> list = new ArrayList<String>();
Cursor cursor = conn.ExecSelect(tabela, campos, null, null, null, null, null);
//ArrayList<?> arr = new ArrayList<String>();
List<String> list;
String[] dados = new String[campos.length];
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
for (int i = 0; i < campos.length; i++) {
if (cursor.getType(i) == Cursor.FIELD_TYPE_INTEGER) {
//dados.add(i, String.valueOf(cursor.getInt(i)));
dados[i] = String.valueOf(cursor.getInt(i));
} else if (cursor.getType(i) == Cursor.FIELD_TYPE_FLOAT) {
dados[i] = String.valueOf(cursor.getFloat(i));
} else if (cursor.getType(i) == Cursor.FIELD_TYPE_STRING) {
dados[i] = cursor.getString(i);
}
}
//list.add(dados);
cursor.moveToNext();
}
cursor.close();
conn.closeConnecion();
return list;
}

Obrigado desde já.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
Att.
Thiago Silva
Desenvolvedor - Rerum Engenharia de Sistemas.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário