Archive

Archive for dezembro \30\UTC 2009

Como retornar e preencher apenas alguns atributos da entidade na consulta com Hibernate

Esses dias desenvolvi um sistema que teria que armazenar uma entidade em escopo de sessão, porém a classe representada pela entidade tinha vários atributos de instância. Isso despertou uma certa preocupação em relação ao consumo de memória, visto que haveriam muitos acessos simultâneos ao sistema e quase todos os usuários teriam esse objeto setado na sessão. O detalhe é que em termos de escopo de sessão eu precisava de apenas alguns atributos, enquanto vários outros eu precisava em apenas algumas telas – poderia ser escopo de requisição.

A solução foi puxar somente alguns dos atributos na consulta que retornava o objeto a ser colocado na sessão. Quando eu precisasse dos outros atributos da entidade, teria uma variável do mesmo tipo em um managed bean com escopo de request que seria utilizado nas telas.

Pensei então: para fazer isso com JDBC é muito fácil, mas minha aplicação usa Hibernate. É possível fazer isso com Hibernate? Como?

Após algumas horas de pesquisa descobri a classe AliasToBeanResultTransformer que simplifica bastante as coisas para a gente. Vamos aos códigos:

Leia mais

Como executar métodos antes de renderizar páginas em JSF – abordagem com RestFaces

No meu post anterior, mostrei como preparar uma aplicação JSF para receber requisições GET com o uso de RestFaces Actions. Nessa nova publicação, mostrarei como chamar um método de um Bean antes de renderizar uma página.

Uma das possibilidades de se conseguir isso é criando um PhaseListener. O problema é que muitas vezes isso acontece em apenas uma página do nosso sistema, então criar um PhaseListener que vai verificar se o usuário está em uma determinada página para executar uma simples ação é bastante desencorajador. Uma outra opção seria colocar lógica no método getter, mas essa prática é fortemente desaconselhada, pois, em geral, os getters não devem ter lógica de negócio.

Com o RestFaces (caso você queira saber como instalar o RestFaces, consulte meu post anterior nesse endereço)  é muito simples fazer essa operação, conforme demonstrarei abaixo:

Leia mais

Usando RestFaces na sua aplicação JSF – trabalhando com requisições GET

Hoje me deparei com um problema aqui no trabalho: uma aplicação nossa em PHP iria chamar uma aplicação JSF passando parâmetros GET que deveriam ser tratados e, dependendo dos dados recebidos, essa aplicação JSF redirecionaria o usuário para uma view ou para outra. Além disso, o sistema em JSF deveria armazenar algumas das informações vindas pela URL para posteriormente exibir na tela para o usuário.

Já sabia que para trabalhar com bookmarking no JSF era necessário utilizar algum componente externo e o mais famoso é o RestFaces. A primeira iniciativa foi então pesquisar como eu iria realizar os seguintes passos:

  1. Tratar esses parâmetros vindos do sistema PHP;
  2. Armazenar os dados recebidos em propriedades dos beans;
  3. Direcionar o usuário para uma das duas telas predefinidas.

O RestFaces tem várias funcionalidades bastante úteis e permite invocar métodos server-side através de uma simples requisição GET HTTP. Ele lhe ajuda bastante no gerenciamento de parâmetros da seguinte forma:

  • Permite passar parâmetros da URL para os métodos server-side;
  • Converte parâmetros;
  • Renderiza parâmetros;
  • Alinha propriedades dos Beans aos parâmetros da URL e vice-versa.

A solução que encontrei para meu problema (poderia ser feito de outras formas) foi apenas criar duas RestFaces Actions.

Vamos ao passo-a-passo:

Leia mais