terça-feira, 22 de fevereiro de 2011

Cuidado com Hibernate usando CascadeType.ALL

Essa semana eu ouvi uma história que me motivou a esclarecer alguns pontos sobre o que significa usar o CascadeType.ALL no mapeamento de uma entidade que faz join, com outra.
Um colega, que não vou dizer o nome é claro, contou-me que esqueceu de remover um cascadetype.all de uma das entidades que mapeiam ao banco de dados de um sistema que ele desenvolveu para uma empresa que controla vendas de aparelhos de celular. O problema maior não foi esquecer o dito cascade mais a forma como ele se lembrou dele. Em meio ao expediente de trabalho ele foi informado que no sistema havia desaparecido todas as vendas de uma semana inteira e que um dos usuários do sistema havia feito uma exclusão de um registro e depois disso tudo desapareceu. Claro que como bom desenvolvedor meu colega se lembrou do famoso cascadetype e fez uma rápida pesquisa pelos códigos que ele havia escrito para o sistema e la estava o dito cujo. Mais o que seria esse tal de cascadetype? Se eu não sou da área de informática estaria me perguntando a mesma coisa, para que diabos serve isso?
Pois então, vou rapidamente citar os tipos mais comuns e usando de cascadetype para que você tenha uma base do que pode usar e pesquisar um pouco mais sobre cada um deles
  • PERSIST
    • Apenas salva.
  • ALL
    • Premite que todas as operações sejam executadas.
  • MERGE 
    •  
  • DELETE
    • Remove o objeto e seus filhos, muito cuidado ao utilizar esse tipo de mapeamento.
  • SAVE_UPDATE
    •  Salva e atualiza

Além dos tipos de cascade citados anteriormente existem outros que não iremos explorar aqui.
Fica prometido um exemplo de como usar o cascade numa aplicação web de exemplo.
Boa pesquisa e bom trabalho.

Nenhum comentário:

Postar um comentário