Node-jdbc 라이브러리 사용하기

2337 단어 ReactReact

Node-jdbc

https://www.npmjs.com/package/jdbc
node 환경에서 jdbc를 사용할 수 있도록 도와주는 패키지입니다. 사실 그렇게 안정적인 라이브러리는 아닌 것으로 판단 됩니다. 사용 설명도 친절하지 않아서 코드를 직접 까보면서 분석해야 하고 이 라이브러리는 c++ 코드를 컴파일 해서 빌드 파일을 생성해주는데 이 때 gcc 버전을 다운 그레이드 설정 해줘야 합니다. 하지만 내부 사정상 사용할 수 밖에 없는 상황이어서 사용하게 되었습니다.

어떻게 사용하는지 아래 예시를 보겠습니다.

Auto commit

기본적으로 commit이 되어야 실제 disk에 변경된 데이터가 써집니다. 이러한 commit의 작업을 트랜잭션이 끝난 후 자동으로 수행 해 주는 것이 Auto commit입니다. 사실 Auto commit은 간단히 생각해봐도 쓰면 안되는 기능이라고 생각합니다. DML문을 실행하는 순간 rollback으로 되돌릴 수 없게 되버리기 때문입니다.

쓰면 안되는 기능이라고 생각은 하지만 있다면 누군가에겐 편한 기능이 될 순 있습니다. 그럼 Auto commit 상태를 어떻게 바꿀 수 있을까요? Oracle은 다음과 같이 변경할 수 있습니다.

set autocommit on/off // on/off
show autocommit // 확인

이것은 oracle의 명령어일 뿐 query가 아닙니다. 그래서 query로써 실행을 해도 실행이 안됩니다.(첫 삽질..) jdbc에 구현된 setAutoCommit 메소드를 활용해야 합니다. node와 jdbc를 연결시켜주는 node-jdbc 라이브러리의 코드를 살펴보겠습니다.

Connection.prototype.setAutoCommit = function(autocommit, callback) {
  this._conn.setAutoCommit(autocommit, function(err) {
    if (err) {
      return callback(err);
    } else {
      return callback(null);
    }
  });
};
출처 : https://github.com/CraZySacX/node-jdbc/blob/master/lib/connection.js

라이브러리 코드입니다. this._conn -> Connection 객체를 가져오고 setAutoCommit은 해당 Connection에 존재하는 메서드임을 확인할 수 있습니다.

이제 구조를 어떻게 잡아야 할지가 감이 옵니다. Connection 당 AutoCommit 상태 하나를 관리할 수 있도록 해야겠습니다. 이제 Connection 정보 타입에는 Autocommit 상태 하나를 추가하겠습니다.

Auto commit on/off 기능에서는 material ui의 switch 컴포넌트를 사용하겠습니다.

이제 현재 Connection과 바꾸고자 하는 autoCommit 상태를 전달하여 서버에서 setAutocommit 메서드를 호출시킬 수 있도록 하는 API를 개발 하면 되겠습니다.

ConnectionInfo의 Autocommit 상태를 변경할 것이니까 POST로 요청 할 것이고 body에는 변경시킬 autocommit 상태(true/false), 변경 시킬 Connection Id를 담아 줄 것입니다.
API를 호출하면 서버 측에서 node-jdbc의 setAutocommit 메소드를 실행하여 autocommit 상태를 변경해줍니다. (코드는 따로 공개할 수가 없네요 ㅠ)

라이브러리 코드 분석

사실 이렇게 라이브러리 코드를 까 본적이 잘 없었던 것 같습니다. 설명이 되있지를 않아서 사용하려면 볼 수 밖에 없는데 보면서 도움이 많이 됐던 것 같습니다.

혹시 node-jdbc 라이브러리 사용하시는 분께 도움이 됐으면 하는데 주된 사용에 관한 메서드는 connection.js 파일을 보시면 되고 connection pool 관련해서는 pool.js를 보시면 됩니다. (그냥 스프링 서버 구축하시는 걸 추천드립니다 ㅎㅎ..)

좋은 웹페이지 즐겨찾기