Tecnologia do Blogger.
RSS

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

Para adaptar o projeto para utilizar um desses ORM's, é muito complicado?

On Friday, February 28, 2014 3:57:26 PM UTC-3, Vinicius Oliveira wrote:

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.ber...@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-...@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.

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

0 comentários:

Postar um comentário