Tornando uma história longa sucinta, o padrão arquitetural usado na empresa que trabalho é de VOs, BOs e DAOs (sim, eu sei…), onde cada tabela do banco reflete 1:1 na quantidade de pacotes que temos, ou seja, um VO pra cada tabela, cada campo é uma coluna.
Quando é necessário trazer dados relacionados entre muitas tabelas rapidamente e de uma vez (evitando milhões de transações se usarmos o estilo acima), usamos uma query específica, e uma VO específica(PageBean é nome dela?) para guardar os dados dessas queries. Nada é gerado dinamicamente, tudo é estático, zero frameworks usados.
Isso acaba com que cada listagem que fazemos é query diferente e possivelmente uma VO diferente(se der somente adicionamos mais campos à ela p/ cobrir as nossas necessidades).
Até que a primeira parte que citei no primeiro parágrafo é relativamente limpa, mas este misto de informações que as nossas listagens trazem está fugindo ao controle, muito deselangante, não chegando a ser um POG, mas passa raspando.
Enfim, alguém tem alguma sugestão, alguma idéia, até comentários de “jogue isso fora” são válidos (mas sem apresentar a solução dificilmente serão seguidos).
O que vocês usam em seus sistemas para mostrar dados talulares relacionados, mas ainda sim distintos?
, eu tinha feito um esquema lá para acabar com esse negócio de VOs específicas para as querys. Basicamente a merda toda começa na idiotice de VOs refletirem 1:1 o BD. O que eu tinha feito na época, é que ao invés de refletirem o DB, elas “puxassem” alguns campos das tabelas relacionadas (aquelas das quais há uma chave estrangeira). Isso não só eliminou quase todos esses VOs artificiais, como simplificou bastante a implementação, pois foi eliminada a necessidade de ficar navegando entre tabelas. O código ficou menor, mais limpo e menos propenso a bugs.