Node-jdbc 라이브러리 사용하기
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를 보시면 됩니다. (그냥 스프링 서버 구축하시는 걸 추천드립니다 ㅎㅎ..)
Author And Source
이 문제에 관하여(Node-jdbc 라이브러리 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@0709/Query-실행에서-고려할-점저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)