ManyToMany não é recomendado?

Ola pessoal, estou começando agora a trabalhar com Hibernate, to apanhando muito para fazer os relacionamentos certos.

A minha duvida é com respeito a ManyToMany.
Não é recomendado de forma alguma? ou se somente quando tenho na tabela associativa atributos alem das chaves que servem para liga-las?

Outra coisa estou utilizando ManyToMany, mas não estou conseguindo trazer a coleção populada da outra tabela:

Ex:

Tabela1

TabelaAssociativa

Tabela2

Quando dou um load em Tabela1 a minha coleção da Tabela2 vem vazia, como resolvo isso?

Acho q não dá para ter uma resposta conclusiva.

Comigo todas as relações q marquei como many-to-many, acabei tratando como ano-to-many e many-to-one, justamente pq sempre acabava precisando de uma propriedade a mais, tal como comentário, data, status, etc.

[]s

É possível sem problemas criar um relacionamento N x N com atributos na tabela associativa, porém li em alguns artigos na internet que normalmente utiliza-se N x 1 e 1 x N por questões de desempenho. Nos artigos citava que o relacionamento N x N utilizando o Hibernate não era performático.

Em ambos os casos citados, com ou sem atributos na tabela associativa, é possível usar as duas abordagens (N x N e N x 1 - 1 x N) porém isso depende muito do domínio do seu problema.

Porém, se o número de relacionamentos N x N for pequeno, acho que não haverá problemas de performance ao utilizar este tipo de relacionamento.

Em relação ao N x N não trazer a coleção já populada, somente analisando seu código fonte. Mas muito provavelmente isto é uma configuração incorreta da propriedade CASCADE. Verifique-a e veja se resolve o problema.

[quote=RicardoLuis]Em relação ao N x N não trazer a coleção já populada, somente analisando seu código fonte. Mas muito provavelmente isto é uma configuração incorreta da propriedade CASCADE. Verifique-a e veja se resolve o problema.[/quote]Falando nisso: o que é e pra que serve esse cascade?

No cascade você consegue configurar se os componentes relacionados com o seu objeto também serão persistidos.

Por exemplo, você possui a classe usuário e a classe contato. Em uma aplicação de agenda, um usuário pode ter vários contatos certo? Então, na classe usuário, em seu relacionamento, você configura o cascade de forma a verificar se ao adicionar o usuário você irá adicionar os contatos referentes a ele ou não.

Deu para entender?

Valeu Edufa, RicardoLuis e ACDias obrigado pelas dicas.

O próprio pessoal do hibernate sugere utilizar one-to-many/many-to-one em vez many-to-many.

— meu tópico foi duplicado — :lol: