乐闻世界logo
搜索文章和话题

How to handle transactions in TypeORM?

2月17日 22:47

Transaction management in TypeORM can be implemented in the following ways:

  1. Using DataSource.transaction():

    typescript
    await dataSource.transaction(async (transactionalEntityManager) => { await transactionalEntityManager.save(user); await transactionalEntityManager.save(order); });
  2. Using the transaction() method of Repository:

    typescript
    await userRepository.manager.transaction(async (manager) => { await manager.save(user); });
  3. Using QueryRunner for manual transaction control:

    typescript
    const queryRunner = dataSource.createQueryRunner(); await queryRunner.connect(); await queryRunner.startTransaction(); try { await queryRunner.manager.save(user); await queryRunner.commitTransaction(); } catch (err) { await queryRunner.rollbackTransaction(); } finally { await queryRunner.release(); }

Transaction isolation levels can be configured by setting isolationLevel, including READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, and SERIALIZABLE.

标签:TypeORM