HIbernate: many-to-one, one-to-many, estou perdido!

5 respostas
A

Ola Fórum

Estou precisando fazer um relacionamento simples no Hibernate. Até agora as coisas que eu fiz, foram apenas utilizando tabelas simples no banco de dados sem relacionamento.
Tenho um relacionamento simples para fazer, mas lendo a documentação do Hibernate, ele explica como que faz esses relacionamentos, mas não explica o que significa cada um deles. Por exemplo, eu não sei o que quer dizer many-to-one. Sei que meu problema é de “modelagem”, então venho aqui pedir a ajuda do pessoal. Como identifico o que é cada relacionamento meu? Coisa bem simples de entender, tipo assim “many-to-one é isso… e é usado nesse caso…”

Obrigado e desculpem o encomodo

Alex

5 Respostas

maxguzenski

eu acho a documentacao do hibernate otima…

bom, mas vamos la:
many-to-one = muitos para um

exemplo:
Voce tem uma classe ESTADO, e outra CIDADE, dentro de CIDADE voce tem um objeto do tipo ESTADO certo ? (cidade.getEstado() etc etc)

entao, CIDADE tem uma relacao “muitos para um” com a classe ESTADO (pois muitas cidades tem um estado em comum)

entao, no mapiamento do hibernate tu vai colocar um <many-to-one name="" … /> no hbm.xml da cidade

e ao contrario, é one-to-many, ou seja, um ESTADO tem muitas CIDADES, talves voce queira colocar um java.util.List dentro do ESTADO para conter todas as cidades desse estado

dai tu mapeia algo como: <set name="" … />

A

muito boa sua resposta Maximiliano, obrigado mesmo, já clareou um pouco as coisas, mas ainda resta dúvidas.

Vamos pegar seu próprio exemplo que ficou ótimo.
Pensando em objetos, dentro do meu objeto Cidade eu terei um atributo do Tipo Estado. Agora pensando na tabela no Banco de dados, para mim criar isso, eu crio dentro da tabela de cidades um campo referenciando a ID do Estado?

Agora o processo ao contrário, no caso de estados que possuem bastantes cidades, é interessante eu colocar esse relacionamento explícito ae também? Qual a vantagem de eu ter esse relacionamento no Estado, talves porque se eu fizesse um HQL usando inner join entre Estado e Cidades eu poderia trazer todas as cidades de cada Estado?
No caso da tabela do Estado, eu não preciso criar nenhum campo para referencia a cidade, certo?

Espero que aos poucos minhas dúvidas vão sendo esclarecidas

Obrigado novamente Maximiliano

maxguzenski

exatamente!

Nao, tu vai usar a mesma relacao, dentro do hbm.xml do estado, no <set _alguma_coisa> tu vai dizer qual é o campo em Cidade que aponta pro teu ID estado… exatamente como fez no primeiro mapiamente, so que dessa vez tu vai estar editando o arquivo estado.hbm.xml

Depende doque voce quer fazer, depende do seu projeto e de como voce vai utilizar a classe… se voce usar sempre a classe de cidade, nao precisa mapear a java.util.List

mesmo pq, se voce quer a relacao das cidades de um estado é so fazer: “from Cidades as cidade where cidade.estado.id = :codigo”

eu nunca uso um java.util.List, pq na maioria das vezes voce nao esta interessado na relacao inteira (que consome memoria e tal), voce quer algo mais filtrado, entao sempre uso hql pra buscar essa relacao e adiciono os filtros que preciso no momento…
mas como disse, tudo depende de como voce vai utilizar as classes…

_fs

ta-da!

http://www.xylax.net/hibernate/

loader

LIPE:
ta-da!

http://www.xylax.net/hibernate/

me loguei soh p/ agradecer por ter postado esse link
em poucos passos explicam tudo!

um abraco! :smiley:

Criado 5 de agosto de 2004
Ultima resposta 16 de jan. de 2008
Respostas 5
Participantes 4