[typescript] async/await를 사용한 데이터베이스 트랜잭션 처리 방법
Node.js에서 데이터베이스 작업을 수행할 때 트랜잭션은 중요한 부분입니다. TypeScript의 async/await
를 사용하여 데이터베이스 트랜잭션을 수행하는 방법에 대해 알아보겠습니다.
Prerequisites
해당 예시를 실행하기 위해서는 다음 패키지가 설치되어 있어야 합니다:
typescript
: TypeScript 컴파일러typeorm
: TypeScript 데이터베이스 ORM
데이터베이스 연결 설정
먼저, 데이터베이스에 연결하는 설정부터 시작해봅시다.
import { createConnection, Connection } from 'typeorm';
async function connectDatabase(): Promise<Connection> {
return await createConnection({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'username',
password: 'password',
database: 'database',
entities: [`${__dirname}/entity/*.ts`],
synchronize: true,
});
}
export default connectDatabase;
위의 코드에서 createConnection
함수를 사용하여 MySQL 데이터베이스에 연결합니다.
트랜잭션 처리
이제 async/await
를 사용하여 데이터베이스 트랜잭션을 처리하는 방법을 살펴봅시다.
import { getConnection } from 'typeorm';
import connectDatabase from './db';
async function performTransaction() {
const connection = await connectDatabase();
const queryRunner = connection.createQueryRunner();
await queryRunner.connect();
await queryRunner.startTransaction();
try {
// 트랜잭션 내에서의 데이터베이스 작업 수행
await queryRunner.query('INSERT INTO table1 ...');
await queryRunner.query('UPDATE table2 ...');
await queryRunner.commitTransaction();
} catch (err) {
await queryRunner.rollbackTransaction();
} finally {
await queryRunner.release();
}
}
위의 코드에서 performTransaction
함수 내에서 queryRunner
를 생성하여 트랜잭션을 시작하고 데이터베이스 작업을 수행한 후, 성공적으로 작업이 완료되면 트랜잭션을 커밋하고, 에러가 발생했을 경우 롤백합니다.
이제 TypeScript의 async/await
를 사용하여 데이터베이스 트랜잭션을 처리하는 방법을 이해하였습니다.