Dúvida de Merge  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

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!

[MSN] [ICQ]
Gustavo Sperandio
JavaChild
[Avatar]

Membro desde: 21/03/2011 15:01:55
Mensagens: 107
Offline

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.
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Gustavo Sperandio wrote: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.


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.
[MSN] [ICQ]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

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


@OneToMany(orphanRemoval=true)


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...
[MSN] [ICQ]
Gustavo Sperandio
JavaChild
[Avatar]

Membro desde: 21/03/2011 15:01:55
Mensagens: 107
Offline

Boa, isso facilita muito a nossa vida!!!
Rodrigo Kossmann
Entusiasta Java
[Avatar]

Membro desde: 12/08/2010 12:39:34
Mensagens: 23
Offline

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.
[Email]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Rodrigo Kossmann wrote: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.


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

This message was edited 1 time. Last update was at 25/03/2011 09:00:48

[MSN] [ICQ]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team