Interessante, hibernate deleta/insere registro sem necessidade!  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
robsonmrsp
What is classpath?
[Avatar]

Membro desde: 11/04/2006 16:28:20
Mensagens: 8
Offline

Olá amigos!

Estava fazendo alguns testes com mapeamento ManyToMany no hibernate e me deparei com uma situacao no mínimo curiosa. Explico aos poucos:

Meu exemplo consite de duas tabelas FUNCIONARIO e EVENTO, e uma tabela de relacionamento EVEN_FUNC (relacionamento MxN). o mapeamento das classes Fucnionario e Evento sao mostrados a seguir.

Classe Funcionario:


classe Evento:





...//idem


O mapeamento acima foi feito seguindo as dicas dos livros Pro EJB 3 Java Persistence API , e Java Persistence with Hibernate , assim como a lógica abaixo para criar o registro na tabela de associação(ou link table, como queiram). Abaixo mostro como estou salvando os registros na tabela de associação:



O que achei extranho foi que, ao ver o SQL executado pelo hibernate, ví que ele deteta TODOS os registros para o Funcionario 2 e em seguida os insere novamente(como podemos obserar na continuação).

////////////////////////////////////////////////////////////////////////////////////////////////////////

Log do Hibernate:


Bem, vem agora a pergunta, ou as perguntas!


1) Existe algum erro no mapeamento? Qual?

2) se nao há erro, o que fazer para que o hibernate nao precise realizar essas deleções "desnecessárias"? Acredito que isso seja caro para o banco!

Caso queiram fazer seus próprios testes lhes envio os fontes quase completos , assim como o DDL de criacao das tabelas.


Favor, comentar!




 Nome do arquivo ddl.txt [Disk] Download
 Descrição DDL de criacao
 Tamanho 762 bytes
 Baixado:  28 vez(es)

 Nome do arquivo src.rar [Disk] Download
 Descrição Fontes do exemplo
 Tamanho 3 Kbytes
 Baixado:  18 vez(es)

CarlosG
HelloWorld

Membro desde: 30/10/2008 06:42:47
Mensagens: 14
Offline

Robson, isso e normal mesmo...
Antes tinha que fazer isso na mão, guardar os registros numa lista, limpar os relacionamentos da tabela e depois inseri-los novamente...
Deve ser algum gambiarra que o hibernate faz...eu também fico meio preocupado, porque se tiver milhões de registros vai demorar para ele fazer tudo....

This message was edited 1 time. Last update was at 16/07/2010 16:11:49

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