[quote=sergiotaborda]…
O codigo não sabe qual é o critério que define que a pessoa é ativa. Nem sabe como procurar essa especie de pessoas
Dentro do Repositorio vc tem isto
public List<Pessoa> listPessoasAtivas(){
Criteria c = CriteriaBuilder.find(Pessoa.class)
with("ativo", true);
return persistanceStategy.executeCriteria(c)
}
Repare que o query é em cima da persistanceStategy. Que pode ser um DAO ou domainStore
O importante aqui é que a criação do critério de busca é no proprio repositório. É essa a sua principal função : encapsular a criação dos critérios.
[/quote]
Bom o nome pode não ser esse… masss o que eu não gosto do DAO é justamente o fato de ser tipado, e de ter as queries dentro dele, ter que usar 192382938 lugares para adicionar e remover entidades é o ponto onde não gosto… e pra mim isso é dar um passo pra traz.
O Hiberante aceita qualquer objeto em suas sessions, e vc encapsular a session e restringir isso pra mim é tiro no pé.
…
O meu repositorio, é realmente o que diz o nome, é um lugar onde se guarda onde se armazena as entidades, é possivel adicionar, remover, atualizar buscar entidades dentro dele.
…
O queries faz parte da camada de persistencia, e vem justamente para não ter q existir 10928239289 repositorios e existir apenas 1, o único objetivo é desassociar as consultas do repositorio e assim não ter q existir vários locais, ou seja, varios repositorios.
queries.forPessoa().listPessoasAtivas().queryOn(repository);
é apenas pq é muito mais legal 1 repositorio, um único lugar
do que ter
repoPessoa.listPessoasAtivas();
repoCarro.listCarrosByAno(2005);
repoEtc.procureEtcPorCriterioX(x);
enfim isso é xato, é extremamente chato!
repository.forPessoas().listPessoasAtivas(); poderia ate ser… mais ai eu tenho que juntar ao repository, e meu repositorio independe de projeto.
enfim, o conceito que vc viu pode ate ser de ser tudo junto, mas desassociar me da mais flexibilidade, e não tenho intenção de abrir mão disso ^^