Dúvidas com update [RESOLVIDO]

Galera, uma dúvida que deve ser bem recorrente a todos é quanto ao update, na persistência de dados.

Imaginem que eu tenho um VO que é persistido. E uma tela do meu sistema eu posso alterar alguns dados trazidos, mas não todos.

Como vocês cuidam da atualização dos dados neste caso? Imagine que um campo não foi alterado, mas um atributo do objeto está como null. Ela não pode alterar o campo correspondente na base para null, pois ele não foi alterado.

Como vocês tratam isso?

Se vc usar um proxy pra acessar seu objeto (e isso implica em usar um factory para solicitar uma instancia do objeto) vc pode manter um mapa das propriedades que foram eventivamente alteradas, acho que é assim que o Hibernate funciona e é o jeito mais facil e menos intrusivo, eu fiz isso uma vez e ficou bem legal (na verdade nao tinha objetos, só interfaces e o proprio proxy mantinha as propriedades em um map :shock: )

Outra opcao é o objeto manter uma lista do que foi alterado e ter uma interface com metodos para recuperar essa lista, é um persistence-system-tabajara hoje em dia, mas tb funciona (e tb já fiz assim).

Uma outra opfcao é usar AOP interceptando os sets, mas isso nunca fiz :roll:

com Hibernate a coisa fica + fácil
dynamic-update="true"
e
dynamic-insert=“true”

Ou ainda, caso a primeira solucao do smota - que eh otima - seja muito trabalho pra isso (sei la, as vezes nao eh um codigo tao grande e nao vale a pena complicar tanto), voce pode usar um bom e velho isDirty() :wink:

Ele precisa de um String[] changedProperties() :wink:

Putz! Haja controle nessa classe.

Valeu galera!