Ola galera,
Estou com uma dúvida.
Tenho um relacionamento muitos para muitos com as classes Equipamento e Local.
Sei que o @ManyToMany deve ser evitado.
Nesses tipo de relacionamento lembro que o meu professor falava para criar uma outra classe tipo: EquipamentoLocal e usar a anotação nas demais apontando para ela.
Mas não lembro se era a anotação @OneToMany ou se era @ManyToOne.
Outra coisa que sempre quis saber é como mapear chave composta com hibernate?
Tipo queria que nessa tabela EquipamentoLocal a chave primária composta fosse a juncao da chave estrangeira de equipamento e a chave estrangeira de local.
Poderiam me ajudar?
A maneira mais simples é utilizando o @ManyToMany está pronto pra usar.
Se seu banco de dados for gerado pela JPA. Utilize a forma mais simples.
Na classe Local.
@ManyToMany
List<Equipamento> equipamentos;
Ou na classe Equipamento
@ManyToMany
List<Local> locais;
Se o banco já existir, utilize @JoinTable para mapear a tabela e as colunais que vc precisa.
E sim você pode criar uma classe para representar a tabela intermediaria, mas antes se pergunte se ela faz algum sentido no seu negócio. Por exemplo, é necessário mais informações além dos IDs do equipamento e local?
Nessa classe intermediaria, vc precisa mapear o Equipamento e o Local com @ManyToOne e no Local ou Equipamento um @OneToMany para a classe intermediária.
Outro ponto, você precisa mesmo de chave composta? Pergunto, porque é um saco trabalhar com chave composta no Hibernate.
Porque @ManyToMany deve ser evitado?