Ir para o conteúdo principal

Como utilizar transactions para garantir a integridade dos dados no typeorm

Data: 19/04/22

Autores:

  1. 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": 

image.png

Exemplo de criação de uma transaction no typeorm utilizando "EntityManager":

image.png

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":

image.png

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.