[quote=pafuncio][quote=baison]
Tem como fazer isso?
[/quote]
Baison, tem sim. O Hibernate te dá a possibilidade de criar interceptors e associa-los ou com uma session especifica ou com toda a “aplicacao”. Assim, vc pode por exemplo implementar a interface Interceptor para que ela faça esse trabalho que vc descreveu.
No entanto, acho que essa não seria a melhor solução para o seu caso. Que tal você colocar o carregamento dessa sua entidade num DAO e sempre que vc chamar o método no seu DAO que faz o carregamento dessa entitidade ele faz essa atribuição que vc precisa?!?![/quote]
É, eu tinha pensado em fazer assim mesmo, so que, como o Hibernate tem tantos recursos e faz algumas “mágicas”, imaginei que ele poderia fazer isso por mim.
Vou colocar o meu caso aki:
Eu tenho em todas as minhas entidades um atributo chamado estadoInterno. Esse atributo é um enum do tipo EstadoObjeto que tem os estados:
NOVO, ANTIGO_INALTERADO, ANTIGO_ALTERADO, ANTIGO_EXLUIDO.
Sempre que um entidade é recuperada, o estado dela é ANTIGO_INALTERADO, e quando ela é instancia, ou seja, foi instanciada mais ainda não foi gravada no banco, o seu estado é NOVO.
O estado novo ja esta ok, porque, sempre que um classe instanciada, no construtor de cada uma, o atributo é inicializado com NOVO.
Bom, eu implementei um GenericDAO que ja faz todo o trabalho usando o JPA. Esse GenericDAO é parametrizável, pedindo um tipo T qualquer. Então, as classes filhas dele, so o estendem para colocar o tipo correto.
Então, se alguma classe filha quiser fazer um método para recuperar o objeto do bd de alguma outra forma diferente, além das ja implementadas, ela vai ter que sempre setar o estado para ANTIGO_ALTERADO. Esse comportamento, eu gostaria que ja ficasse automático.
Vc falou desse interceptors, o que é isso resumidamente? é muito complicado?
VLW