Desta forma a paginação fica toda na camada de negócio. A View só receberia o subset de dados desejado. Creio que esta forma seja para economizar banda (menos TOs para transferir).
Porém, num ambiente não-distribuido eu posso até escolher fazer esta paginação na View, com uma classe útil que implementa um Value List Handler.
A poucos vi uma thread disso e o pessoal comentava sobre colocar paginação no banco de dados tb. Mas ai seria bom se a resposta do banco demorasse. Se é questao de volume de dados mesmo, então nao teria porque de colocar paginacao no banco.
No teu caso, acho que eu faria mesmo alguma classe util que se fosse o caso utilizaria depois em alguma camada de distribuição… Sei lá…
Os dados que você pretende carregar cabem tranquilamente na memória? Se sim, carregue-os todos de uma vez em memória, faça cache e use a paginação a partir deste cache (mais performático). Caso contrário, use paginação usando o banco (menos performático, pois vai requerer acesso ao banco de dados para obter as demais páginas a cada iteração). Dica: javax.sql.CachedRowSet.
Hmmm, não necessariamente. Você pode implementar um VLH alterando a fonte de dados a qual você vai acessar (cache ao invés de banco de dados), logo VLH funciona.
[rant mode=on]
Contudo, a maioria dos J2EE Patterns são soluções complexas (workarounds?) para problemas que não existem ou ninguém jamais teve/terá. Mas isso é uma discussão infrutífera e que não vai dar em nada mesmo…
[/rant]
Para mim não acho que você pode adapita-lo e fazer algo bacana.
O exemplo mostrado no J2EE Pattern é para quando as conexões com o banco é muito cara e no seu cache de conexões há poucas conexões sendo muito concorrido ganha-las e a comunicação entre cliente e camada de negocio é cara.
Vendo isso quando você ganha uma conexão você consulta tudo o que você pode querer e faz um cache em memória. Assim conforme o cliente vai querendo ele vai pegando sub-listas do meu cache. Com o cache eu evito ter que concorrer varias vezes a ganhar conexões com a persistencia e com as sub-listas(paginação) eu evito passar dados que o cliente não vai usar entre a camada de negocio e o cliente.
Eu estou com um problema de pagina de resultado de busca em sites web e vou usar VLH sem cache para isso. Acho que é uma boa pedida!