Class

Opa galera… estou estudando estes dias e estou querendo fazer a seguinte coisa. so para teste mesmo.
eu gostaria de criar uma classe que fosse capaz de montar query’s de maneira bem genérica. Por exemplo, eu gostaria de salvar o obj pessoa. Então eu chamaria esta classe que pegaria os atributos através do Pessoa.class e montaria uma query e mandava pro banco. Minha dúvida é. Como passar os parametros. EX:

queroMontarMinhaQuery(AkiTemQueIrAClasse)

mas como eu vou passar a classe? porque quando eu passar pessoa eu vou ter que pegar Pessoa.class, quando eu passar Loja vou ter que pegar Loja.class. O mesmo método pode receber classe diferentes.

???

abraço

Pesquisa a respeito de Hibernate.
Ele ja faz oque você quer.

A resposta para isso seria:

metodo(Class classe);

mais concordo com o amigo ai de cima… estuda sobre Hibernate…
quando eu não sabia usar o Hibernate criei um framework exatamente do jeito que você está pensando!
foi legal, pois me aprofundei bastante nas classes Reflection, porém foi um trabalho ‘inutil’, pois o hibernate faz tudo isso e mais um pouco…

hehehe…

[quote=matheus306]Opa galera… estou estudando estes dias e estou querendo fazer a seguinte coisa. so para teste mesmo.
eu gostaria de criar uma classe que fosse capaz de montar query’s de maneira bem genérica. Por exemplo, eu gostaria de salvar o obj pessoa. Então eu chamaria esta classe que pegaria os atributos através do Pessoa.class e montaria uma query e mandava pro banco. Minha dúvida é. Como passar os parametros. EX:

queroMontarMinhaQuery(AkiTemQueIrAClasse)

mas como eu vou passar a classe? porque quando eu passar pessoa eu vou ter que pegar Pessoa.class, quando eu passar Loja vou ter que pegar Loja.class. O mesmo método pode receber classe diferentes.

[/quote]

Vc quer passar a classe, então passe a classe.

queroMontarMinhaQuery(Pessoa.class);

Para montar (build) a query vc precisa de um objeto do padrão Builder. Isso irá ajudá-lo muito. De quebra use encadeamento de métodos para facilitar. ficaria mais ou menos assim :

Query<Pessoa> q = QueryBuilder.search(Pessoa.class) .and("nome").eq("josé") .and("idade").between(13, 21) .orderby("nome").asc();

Depois vc manda algum objeto executar a query. Esse objeto, em algum lugar irá usar um objeto no padrão Interpreter ( ou seja um interpretador) que irá converter o objeto query em um string SQL ou em qq outra coisa que vc quiser ( um criteria do hibernate, por exemplo).

List<Pessoa> pessoas = repositorio.find(q);

Padrões relacionados : Builder, Interpreter, QueryObject

O pessoal so agora tive tempo de agradecer a vocês!!!

Valeu dimais pelas dicas!!