| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/06/2010 09:10:35
|
robsonmrsp
What is classpath?
![[Avatar]](/images/avatar/fea33a31df7d05a276193d32621ecbe4.jpg)
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 |
Download
|
| Descrição |
DDL de criacao |
| Tamanho |
762 bytes
|
| Baixado: |
28 vez(es) |
| Nome do arquivo |
src.rar |
Download
|
| Descrição |
Fontes do exemplo |
| Tamanho |
3 Kbytes
|
| Baixado: |
18 vez(es) |
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2010 16:10:57
|
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
|
|
|
 |
|
|
|
|