Node.js – 데이터베이스 연동 – MySQL – 2 – 데이터 추가, 수정, 삭제

ES6(ECMAScript 2015) - 객체 리터럴 확장 - 2 - 프로토타입 축약
Node.js – 데이터베이스 연동 – MySQL – 2 – 데이터 추가, 수정, 삭제

Node.js – 데이터베이스 연동 – MySQL – 3 – 트랜잭션 처리

소제목: 트랜잭션이란?

트랜잭션은 데이터베이스 연동에서 중요한 개념 중 하나입니다. 트랜잭션은 데이터베이스 작업을 하나의 논리적인 작업 단위로 묶는 것을 의미합니다. 이 작업 단위에서는 일련의 데이터베이스 연산이 수행되는데, 모든 연산이 성공적으로 완료되면 변경된 데이터가 커밋되고, 만약 실패하면 변경 내용이 롤백됩니다. 트랜잭션은 데이터의 일관성과 안정성을 보장하기 위해 사용됩니다.

예를 들어, 은행 계좌 이체 작업을 생각해보겠습니다. 이 작업은 보내는 계좌에서 돈을 출금하고, 받는 계좌로 돈을 입금하는 두 개의 연산으로 이루어집니다. 이러한 작업을 트랜잭션으로 묶으면, 출금과 입금이 모두 성공적으로 이루어진 경우에만 변경 내용이 커밋되고, 그렇지 않은 경우에는 이전 상태로 롤백되어 일관성을 유지할 수 있습니다.

소제목: 트랜잭션 처리 방법

트랜잭션 처리를 위해 Node.js에서 MySQL을 사용하는 방법에 대해 알아보겠습니다. 아래의 예시 코드를 통해 설명하겠습니다.

const mysql = require('mysql');

// MySQL 연결 설정
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'username',
  password: 'password',
  database: 'database_name'
});

// 트랜잭션 시작
connection.beginTransaction(function(err) {
  if (err) { throw err; }

  // 트랜잭션 처리할 SQL 쿼리
  const query1 = 'INSERT INTO table1 SET ?';
  const query2 = 'UPDATE table2 SET column1 = value WHERE id = ?';

  connection.query(query1, { column1: 'value1' }, function(err, result1) {
    if (err) {
      connection.rollback(function() {
        throw err;
      });
    }

    connection.query(query2, [result1.insertId], function(err, result2) {
      if (err) {
        connection.rollback(function() {
          throw err;
        });
      }

      connection.commit(function(err) {
        if (err) {
          connection.rollback(function() {
            throw err;
          });
        }
        console.log('트랜잭션이 성공적으로 완료되었습니다!');
        connection.end();
      });
    });
  });
});

위의 예시 코드에서 connection.beginTransaction() 메서드로 트랜잭션을 시작합니다. 그리고 트랜잭션 처리를 해야할 SQL 쿼리를 정의하고, connection.query() 메서드를 사용하여 쿼리를 실행합니다.

만약, 어떤 쿼리가 실패한 경우에는 connection.rollback() 메서드를 호출하여 이전 상태로 롤백합니다. 모든 쿼리가 성공적으로 실행된 경우에는 connection.commit() 메서드를 호출하여 변경 내용을 커밋합니다.

마지막으로, connection.end() 메서드를 호출하여 MySQL 연결을 종료합니다.

주의해야 할 점

트랜잭션 처리를 할 때 주의해야 할 몇 가지 점이 있습니다:

  1. 트랜잭션 범위: 트랜잭션의 범위를 적절히 설정해야 합니다. 필요한 연산을 모두 포함하도록 범위를 정의하여 데이터의 일관성을 유지할 수 있습니다.

  2. 롤백과 커밋: 트랜잭션 내에서 발생하는 에러 처리는 중요합니다. 에러가 발생하면 connection.rollback() 메서드를 호출하여 롤백해야 합니다. 모든 연산이 성공적으로 완료되면 connection.commit() 메서드를 호출하여 변경 내용을 커밋합니다.

  3. 자원 해제: 트랜잭션 종료 후에는 connection.end() 메서드를 호출하여 MySQL 연결을 적절히 해제해야 합니다. 자원 누수를 방지하기 위해 연결을 닫아야 합니다.

트랜잭션 처리는 데이터베이스 작업에서 중요한 부분이므로, 주의깊게 구현해야 합니다. 특히, 롤백과 커밋을 올바르게 처리하여 데이터의 일관성을 유지해야 합니다.

Node.js와 MySQL을 사용하여 트랜잭션 처리를 할 수 있으며, 이를 통해 데이터베이스 작업의 안정성을 높일 수 있습니다.

이상으로 Node.js와 데이터베이스 연동, MySQL, 트랜잭션 처리에 대한 내용을 알려드렸습니다. 혹시 더 궁금한 점이 있다면 언제든지 물어보세요!

답글 남기기