Como utilizar transactions para garantir a integridade dos dados no typeorm
Data: 19/04/22
Autores:
- Igor Ramos de Oliveira (Assessor)
1. Objetivo
Criar um estudo que seja capaz de mostrar como utilizar "transactions" do typeorm para reverter dados em situações que uma série de ações não pode ser completada por algum erro ou regra de banco.
2. Introdução
Transações são unidades de trabalho processadas pelo sistema de gerenciamento de banco de dados. Essas transações são utilizadas quando é necessário realizar de uma só vez várias operações em banco de dados, exemplo: "delete, insert, update". Após o inicio de uma transação, ela deve garantir que somente ao fim de todas as operações, os dados sejam realmente modificados no banco de dados, e caso ocorra algum erro durante este processo, ela deve reverter tudo que foi feito até o momento garantindo a integridade e consistência dos dados.
3. Desenvolvimento
3.1 Como criar uma transação no typeorm?
As transações podem ser criadas de duas maneiras diferentes, usando "DataSource" ou "EntityManager". Exemplo utilizando "DataSource":
Exemplo de criação de uma transaction no typeorm utilizando "EntityManager":
Todas as operações que serão executadas em uma "transaction" deve ser executada dentro de um callback, exemplo de duas operações de "insert" em banco de dados utilizando "transaction":
A regra mais importante quando se utiliza "transactions" é, utilizar a instância oferecida pelo gerenciador de entidade "transactionalEntityManager". E nunca se deve usar a "global entity manager" quando estiver fazendo uso de "transaction" com typeorm.
4. Conclusão
As transações funcionam como uma garantia a mais para que os dados estejam consistentes e para que não ocorra problemas maiores com operações que acabe dando erro ao serem executadas. Então, toda vez que for necessário fazer mais de uma operação em banco, é muito importante que seja usado uma "transaction" para este fim.
5. Referências
[1] https://typeorm.io/transactions, acesso em 2022.
[2] https://www.alura.com.br/artigos/transacoes-no-sql-mantendo-os-dados-integros, acesso em 2022.