Dúvida de Merge

6 respostas
L

Olá,

Galera estou numa pequena dúvida. Imaginem a seguinte situação.

Entidade1
Entidade2

Entidade1 pode possuir n Entidade2, ou seja, Entidade2 tem um ManyToOne para Entidade1 e Entidade1 possui OneToMany para Entidade2

Agora imaginem que foi feito um cadastro novo de uma Entidade1 com 3 Entidade2 relacionadas… você fez um merge e no banco foram criados: Entidade1 e 3 Entidade2 relacionadas a Entidade1.

Agora vou atualizar esse registro e na minha Entidade1 estou deixando apenas 2 Entidade2 e dou um merge, o que acontece na base? No meu caso as 3 Entidade2 estão permanecendo lá, e não apenas 2, gostaria que uma delas fosse excluida, eu tenho que fazer isso na mão? O Hibernate não deveria fazer isso automático, quando eu tenho a Entidade1 com apenas 2 Entidade2 dentro, e dou um merge, ele não deveria deixar o banco de acordo com meu objeto, pq a outra Entidade2 ainda fica lá?

Não sei se fui claro o suficiente, qualquer coisa tento explicar melhor. Obrigado!

6 Respostas

Gustavo_Sperandio

Você falou bem deveria… eu mesmo não fiz o teste mas não confio nesse processo por isso nesse caso eu faço na mão mesmo.

L

hehehe… por enquanto estou fazendo na mão também, mas se alguém ai souber algo sobre isso, ou a forma correta de se fazer, seria de grande ajuda. Obrigado.

L

Opa… encontrei algumas informações sobre o parametro orphanRemoval para JPA 2.0, testei e funcionou perfeitamente.

Desta forma, quando der um merge em um objeto que possua um collection, ele irá deixar a base exatamente como no collection no caso de haver menos registros no collection, ele deleta os “orfãos” da base.

Até mais…

Gustavo_Sperandio

Boa, isso facilita muito a nossa vida!!!

Rodrigo_Kossmann

Bom saber da existência desse orphanRemoval. Mas creio que é perigoso fazer isso. É mais seguro vc dizer quais os dados que devem ser deletados do que permitir que o Framework faça. Claro que um projeto bem planejado pode evitar, mas um programador meio desatento pode fazer com que se perca uma quantidade enorme de dados. Acho que quando se trata de Banco de Dados nós devemos diminuir ao máximo a probabilidade de erros.

L

Sim concerteza… deve ser muito bem testado e bem avaliado o uso desta funcionalidade. Só comecei a buscar informações sobre isso, pois em um sistema grande pode dar muito trabalho ficar se preocupando em remover essas dependencias da base, e o principal uso de um framework é diminuir o trabalho, então vamos utilizar o que ele oferece, mas vamos testar muito bem antes de colocar na produção :lol:

Criado 22 de março de 2011
Ultima resposta 25 de mar. de 2011
Respostas 6
Participantes 3