Pessoal,
Existe alguma forma de Criarmos uma cópia de um Objeto sem compartilhamento de memória?. Ex: Obj1 = Obj2, mas cada objeto está alocado em uma posição.
Estou desenvolvendo um mecanismo de “Log” das operações de CRUD para minha aplicação, nesse mecanismo tenho um método que
após efetuada uma alteração no BD é invocado passando dois parâmetros “Objeto antes da alteração” e “Objeto após alteração”,
a partir de então ele irá realizar a comparação nos valores do objeto e gravar em um BD de Log algumas informações
como: qual campo foi alterado, qual é o valor antigo do campo, usuário que alterou etc… Esse mecanismo está sendo invocado nos métodos de CRUD do DAO.
Até ai tudo bem !!!
Meu problema está na preparação desses objetos que tenho que passar como parâmetro,
Pois mesmo realizando um select no BD para obter o Objeto antes da alteração a JVM cria um ponteiro para o Objeto que já está na memória
(ficando os dois Objetos com o mesmo conteúdo).
public void altera(Pessoa objAlterado) {
// Select para Obter o Objeto antes da alteração,
// como a alteração ainda não foi comitada no BD ainda consta o Obj antigo
// mas nesse momento o valor que recebo no Obj é o valor alterado pois a JVM
// criou um ponteiro dizendo que os objetos são os mesmos.
Pessoa objAntes = this.buscaPorId(objAlterado.getPessoaPK());
// executando a Alteração no Banco
dao.altera(objAlterado);
// Instanciando o Mecanismo de LOG
AuditTrail trail = new AuditTrail(em);
// Executando a comparação
trail.updated(objAlterado, objAlterado);
}
Obrigado…