Столбец версии TypeORM: управление версиями сущностей и управление параллелизмом

ВерсияColumn в TypeORM относится к функции, которая позволяет автоматически отслеживать и управлять версией объекта в базе данных. Он используется для управления оптимистичным параллелизмом, где могут возникнуть конфликты, если несколько пользователей попытаются одновременно изменить один и тот же объект.

Вот несколько методов, связанных с функцией «versionColumn» в TypeORM:

  1. Декоратор @Version: TypeORM предоставляет встроенный декоратор под названием @Version, который вы можете использовать, чтобы пометить определенный столбец в вашей сущности как столбец версии. Этот декоратор гарантирует, что столбец версии автоматически увеличивается при каждом обновлении объекта.

Пример:

import { Entity, Column, Version } from 'typeorm';
@Entity()
export class User {
  @Column()
  name: string;
  @Version()
  version: number;
}
  1. Оптимистическая блокировка: TypeORM поддерживает оптимистическую блокировку через столбец версии. Когда вы обновляете объект, TypeORM проверяет, соответствует ли версия в базе данных предоставленной вами версии. Если они не совпадают, это означает, что объект был изменен другим процессом, и TypeORM выдает ошибку параллелизма.

Пример:

import { getManager } from 'typeorm';
const entityManager = getManager();
const user = await entityManager.findOne(User, 1);
user.name = 'New Name';
try {
  await entityManager.save(user);
} catch (error) {
  // Handle concurrency error
}

Используя декоратор @Versionи выполняя оптимистическую блокировку, вы можете обеспечить согласованность данных и справиться с конфликтами параллелизма в вашем приложении.