Duvida Hibernate, mapeamento Classe x Entidade Relacionamento

2 respostas
E

Olá Galera estou com um dúvida, seguinte:

Tenho 3 classes

1 - Produto
2 - Categoria
3 - Atributo

1 - Produto 1…* Atributo (Set Atributos)
2 - Categoria 1…* Atributo (Set Atributos)

A dúvida é: Terei duas tabelas (1-Produto_Atributo, 2-Categoria-Atributo), sendo assim, existe a necessidade de se fazer o mapeamento de duas classes, tem que ao invés de fazer a classe atributo eu ter que fazer duas Classes, onde a primeira seria para Atributo de Produtos e a seguinte seria Atributos de Categoria, existe a possiblidade de se resolver isso com o mapeamento único de atributo, ou seja, do jeito que está acima?

Como ficaria o mapeamento?

2 Respostas

Mauricio_Linhares

Teria se produto e categoria tivessem um “pai” em comum, porque aí você ia ter como garantir a integridade referencial da tabela de atributos, mas se eles não tiverem um pai em comum, não tem como fazer não, porque o Hibernate não teria como diferenciar se o atributo é de Categoria ou de Produto (a não ser que você implemente um filtro com persister e blablablablabla, o que eu acredito que não valha a pena, já que os atributos de produto são só de produto e os de caregoria também são só de caregoria, então separados eles ficariam até melhor).

Pense direitinho se os dois aí não tem mais coisas em comum que possam fazer com que eles tenham um pai e m comum.

E

Boa tarde Mauricio, veja, a classe atributo é a mesma para categoria e produto, ou seja, produto e categoria tem a mesma estrutura de atributos como também produto<>categoria tem estruturas diferentes, sendo assim, queria utilizar uma classe atributo para as duas estruturas, como poderia fazer isso?

Tive a idéia de fazer atraves de herança, mais o problema que seria meio redundante pois a estrutura de atributos seria exatamente a mesma, o que seria o diferencial é apenas o atributo de banco de dados referente a foreign key, outra coisa, seria a necessidade de gravar em duas tabelas diferentes como já mencionei no tópico anterior.

Criado 4 de setembro de 2006
Ultima resposta 4 de set. de 2006
Respostas 2
Participantes 2