Relacionando Tabelas no Mundo OOP

3 respostas
A

Boa Tarde,

Estou trabalhando com o Hibernate, e surgiu dúvidas teóricas e práticas sobre relacionamento de tabelas mas trabalhando com OOP.
Irei dar 2 exemplos bastante comuns em um sistema comercial.

O primeiro é quando uma tabela possui informações de outra, mas apenas uma informação, vou dar o exemplo de uma tabela de Clientes e esse Cliente possui uma cidade cadastrada que está na tabela de Cidades.
No Modelo relacional, eu crio uma tabela Clientes e dentro dela coloco um campo chamado Cidade que é inteiro e grava o código da Cidade, depois em uma futura consulta, eu posso fazer um inner join, algo do tipo

Select Clientes.*,Cidades.* from Clientes Clientes inner join Cidades Cidades on Cidades.Codigo = Clientes.Cidade
Agora utilizando OOP, isso é conhecido com um relacionamento One-To-One, certo? e dentro do meu Bean cidade, eu colocaria um Attributo do tipo Cidades, certo? Quando eu fosse montar meu HQL, como ficaria?

Agora a segunda dúvida é a mais difícil de entender.
Vamos supor no exemplo de uma tabela de Fabricas e uma Tabela de Produtos. A fábrica, vende vários produtos, enquanto 1 produto, pode ser vendido em fábricas diferentes. Por exemplo, a Fabrica 1, pode vender o produto 1, 2, 3… e a Fabrica 2 pode vender o Produto 2 mas com outro preço e etc.
No Modelo relacional, eu tinha uma tabela de Produtos (onde cadastro os produtos) uma de Fabrica (onde cadastro as Fábricas) e uma FabricaProdutos, onde entraria o Codigo da Fabrica, o Codigo do Produto, e outros dados particulares como Preço Unitário, Qtde em Estoque e etc…
Como eu posso implementar isso em Beans? Isso é um many-to-many? many-to-one? Nessa parte estou totalmente boiando… Como ficaria um HQL para por exemplo, trazer quais as fábricas que trabalham com determinado produto?

Desculpem o texto longo, mas realmente estou com dúvidas nesse ponto

3 Respostas

A

sem querer ser chato.

mas será que ninguem utiliza o hibernate aqui em projetos reais? será que ninguem nunca precisou usar isso?

pcalcado

“alex.lopes”:
sem querer ser chato.

mas será que ninguem utiliza o hibernate aqui em projetos reais? será que ninguem nunca precisou usar isso?

Usam sim, e por um acaso eu não, mas vou tentar responder sua segudna dúvida: “many-to-many”, e isso porque a dúvida é de é OO, não Hibernate :wink:

O HQL alguém vai responder, creio…

[]s

TedLoprao

Vamos ver se consigo te ajudar…
No primeiro caso o relacionamento seria many-to-one, ou seja, vários clientes podem ser de uma determinada cidade…
O HQL, se teu mapeamento estiver ok, seria mais ou menos o seguinte:

select c,
         c.cidade
from  Cliente as c

Ai ele trará os dois objetos, o cliente e cidade (hmmm, não testei aqui, mas a princípio é isso).
Quanto a segunda questão, é como o pcalcado falou, o relacionamento é many-to-many e os beans terão uma collection como propriedade. O tipo da collection depende das opções feitas no mapeamento, pode ser Set, List, etc…

Espero ter ajudado, pelo menos um pouco, huahauhauh!!!

Criado 12 de julho de 2004
Ultima resposta 12 de jul. de 2004
Respostas 3
Participantes 3