Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
No mundo real, muitas vezes a gente quer que ao deletar uma entidade pai, os filhos sejam deletados automaticamente. Parece óbvio, né? Mas na prática, o TypeORM às vezes faz o contrário do que a gente espera.
No meu time, já passei por isso várias vezes. Você configura cascades, acha que vai resolver, mas na hora da exclusão só a tabela do pai some, e os contatos permanecem lá. Isso dá um trabalho depois pra limpar o banco manualmente. A decisão fica mais saudável quando o time consegue medir o impacto depois.
A dica é: configure o cascade corretamente na relação, mas também teste se a exclusão em cascata funciona de fato no banco. Muitas vezes a configuração no código não é suficiente, e o banco precisa estar preparado para isso. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Outra coisa importante: lembre-se que deletar tudo de uma vez pode gerar problemas de integridade se não tiver cuidado. O ideal é fazer a exclusão em etapas, com checagens de dependência.
Na sua implementação, você tentou colocar cascades em ambos os lados da relação, mas nem sempre é suficiente. Teste no banco, veja se o cascade está ativado, e lembre-se que às vezes é preciso usar delete cascata no nível do banco, não só na ORM. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
Quem aqui já teve problema com isso? Como resolveram sem virar uma bola de neve de registros órfãos? Afinal, o que vale é garantir que a operação de delete seja segura e consistente. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Por fim, se a sua aplicação depende de exclusões em cadeia, pense bem na estratégia de manutenção e testes para evitar surpresas na produção. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
Eu faria um teste pequeno, criar um relacionamento com cascade, inserir alguns contatos, deletar a entidade pai e conferir se tudo foi removido. Se não, ajusta o banco ou a configuração.
No meu time, a gente sempre testa a exclusão em um ambiente de staging antes de rodar na produção. Configurar cascade no ORM é bom, mas nada substitui um teste real.
A dúvida é: será que essa configuração de cascade não deixa a gente muito dependente do ORM? Pq se mudar de banco ou de ORM, pode dar ruim. Melhor garantir a integridade no banco também.
duvido!