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

Hibernate e o Cascade

Uma dúvida que vem me perseguindo a tempos, e já que não tem nada falando relacionado nos cursos gostaria de saber

Quando se deve e quando não se deve usar usar o Cascade?

Fiz o meu projeto de engenharia da faculdade e simplesmente tive vários problemas de acoplamento devido ter mapeados o objeto com o Cascade. Estou refatorando o código sem usar, verifiquei q consigo fazer o mesmo porem com mais linhas de códigos

3 respostas
solução!

Olá Douglas, tudo bem? Peço desculpas pela demora no retorno! Bem o Cascade é algo que devemos ter bastante cuidado, o uso dele é importante quando temos informações, no caso registros de uma entendida que não fazem sentido existir sem a outro entendida, tipo, digamos que você tenha um simples CRUD de cliente, e cada entidade cliente tenha um relacionamento com outra entidade chamada endereco, de forma bem simples, não faz sentido que o endereço continue existindo na tabela se o cliente for excluído, entendeu a ideia? Nesse caso seria interessante que ao excluirmos o cliente também seja excluído o endereço do mesmo.

Espero ter ajudado e bons estudos!

entendi.

só para complementar o seu exemplo.

eu tenho uma classe "Cliente" e todo cliente tem q ter "Endereco", ou seja, não tem sentido existir o endereço se não houver aquele cliente, o q torna isso uma composição

se eu for fazer isso sem ser pelo metodo tradicional (jdbc) teria q remover o cliente e após o endereço, e caso de errado em um dos 2 casos, fazer o rollback,

então, para isso q serve o merge, persist, delete... para q todas as alterações sejam replicadas para as suas composições (pessoa diz filha, mas isso confunde)

quando não usar, quando o relacionamento for uma agregação, ou seja as dependentes tem motivo para existir.

correto?

se sim, ai a pergunta correta seja, quando identificar q existe a necessidade de usar ou não.. talvez o problema seja mais arquitetural mesmo

obrigado

Isso Douglas, essa é uma questão arquitetural, ou do negócio, penso que está mais ligado a regra de negócio do que ao sistema mesmo, mais a ideia é, se uma entidade (registro) não pode (ou não deve) existir sem outra então devemos usar o cascade, do contrário não existe a necessidade. Ainda nesse seu exemplo, se esse sistema tiver as entidades (tabelas) cliente e empresa, não tem relação uma com a outra, e não precisamos excluir uma porque a outra foi excluída, foi um exemplo até ruim, mas acho que deve ter ficado claro ;)

Espero ter ajudado!