Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida no Ex.4 da Aula 6 - Não entendi ainda o conceito de relacionamento "FORTE" e "FRACO"

Com o uso de mappedBy para gerar um relacionamento OneToMany no exemplo empregado, não consegui entender o conceito de Forte e Fraco. Qual o produto disso? Teria como dar um exemplo prático?

5 respostas

Oi Daniel, pensa assim. No seu mapeamento uma movimentação pertence a uma conta, aí vc foi lá e colocou a annotation @ManyToOne. Em algum momento vc sente a necessidade de, a partir de uma conta, buscar as movimentações, vai lá na classe conta e adiciona uma List<Movimentacao> e anota com @OneToMany.

Para o hibernate, se vc não falar nada, isso é um novo relacionamento. Você está dizendo que quer relacionar uma conta com várias movimentações e ele vai dar um jeito de fazer isso ser verdade no banco de dados(criando uma tabela de relacionamento). Para contornar, você usa o atributo mappedBy da annotation.. Justamente para dizer para o hibernate que isso não é um novo relacionamento, é apenas a navegação bidirecional do relacionamento que já está mapeado pelo outro atributo.

Então, qualquer relacionamento que eu fizer do tipo, usando notações que tratam a cardinalidade entre duas tabelas, o comportamento default vai ser a criação de uma tabela intermediária, onde para que eu consiga fazer o relacionamento direto (que é o caso), eu tenho de usar o parâmetro mappedBy no atributo. Aí a classe que receberá o parâmetro será sempre a classe que terá a chave estrangeira na tabela que o representa? Ou é o contrário, ou seja, será a classe que contém o atributo o qual o mappedBy está relacionado que terá a tabela que a representa contendo a chave estrangeira?

Geralmente quem tem o mappedBy é a ponta que possui a annotation com o fim toMany :). Quando vc tem um relacionamento bidirecional, o lado toMany sempre é só um facilitador :).

Daniel tenta ver um pouco sobre cardinalidades de modelo relacional de banco de dados, se não você vai ficar perdido mesmo. Conhecer MER e DER é sempre importante.

solução!

Julio, o conceito relacional de cardinalidade eu entendo, na verdade só queria saber o efeito do mappedBy nas tabelas com relação ao que o Hibernate executa na presença dele, mas sem problemas. Vou finalizar esse post!