Archive

Posts Tagged ‘AliasToBeanResultTransformer’

Usando ResultTransformer personalizado na sua consulta com Hibernate

No post “Como retornar e preencher apenas alguns atributos da entidade na consulta com Hibernate” mostrei como usar a classe AliasToBeanResultTransformer junto com HQL. A classe fornecida pelo próprio Hibernate é realmente muito útil, acontece que se você tem alguma consulta SQL através do método createSQLQuery (da classe org.hibernate.Session), pode ter passado pelo problema que tive essa semana. Infelizmente a classe AliasToBeanResultTransformer não funciona com SQLQuery quando, entre os atributos retornados, há  Enumerations. Outro problema é quando temos atributos de entidades relacionadas. A reflexão empregada por essa classe auxiliar não consegue instanciar e preencher as dependências entre a classe principal e seus relacionamentos.

Vamos ao exemplo abaixo:

Leia mais

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