Em situações como essa eu tendo a definir classe criterios de pesquisa para ser entrada, e classes resultados de pesquisa.
Na classe de resultado vc pode colocar o total de itens que sofreram a pesquisa, o numero da página que o resultado pertence, a ordem em que esta organizada o resultado. Derrepente vc pode até colocar o criterio utilizado para extrair o resultado.
E se isso é uma exigência do cliente ou usuário.
Se isso é um requisito do sistema .
Estava pensando em usar um List personalizado.
class PageableList implements List {
private List list;
public PageableList (List list) {
this.list = list;
}
public int getTotalPages() {
}
public void nextPage() {
}
// outros métodos eu delego.
public Iterator iterator {
return list.iterator;
}
}
Existe alguma coisa pronta e com hibernate para isto ?
Já fiz um projeto que usava isto.
O problema, quando vc pega uma equipe que acha que isso é um exagero.
Tentai criar classes de pesquisa e resultados personalizadas ´para cada entidade.
Me falaram que isso era exagerado e que eu tinha que fazer como a SUN “ensinava”.
O uníco problema é criar classes de pesquisa complexas com muitos relacionamentos.
class ListaVenda {
public int totalPaginas() {
}
public Iterator obterRegistros() {
}
}
class FiltroVenda {
public void filtrarPorData(Date data) {}
public void filtrarPorCliente(Cliente cliente) {}
public void setRegistrosPorPagina(int registros) {}
public void setPagina(int pagina) {}
}
class GerenciadorVendas {
public ListaVenda listarVendas(FiltroVenda filtroVenda) {
}
}
O problema é que vc não vai criar um para cada entidade, vc vai criar um que sirva para a maioria das entidades. Isso vai aumentar a reutilização de código.
Estou fazendo o projeto de estudo e derrepente vou implementar algo deste tipo.