요약
- ORM: 관계형 데이터베이스의 2차원 테이블과 테이블 안에 저장된 행(data)을 애플리케이션의 Class와 인스턴스에 각각 매핑해주는 기술.
- 장단점
장점 단점 개발 생산성 향상 미세한 수정 및 디버깅 시 난항 버그, 실수 감소 ORM이 지정해 놓은 명령만 수행 가능 가독성 향상 쿼리 수행 속도 저하 객체 지향적 접근 가능
장점
단점
ORM을 사용하지 않고
TypeORM에서 제공하는 데이터베이스 연결(풀링) 기능과 Raw Query만 사용하는 이유?
Node와 RDBMS의 ORM서비스를 제공하는 주요 3대 라이브러리 중 하나.
Javascript, Typescript 와의 호환성, 확장성
mysql과 연결하여 직접 작성한 SQL Raw Query 문을 실행할 수 있게 DB 커넥터의 기능만
을 활용
설치
npm install typeorm
Dotenv 파일(.env) 내 환경변수 설정하기
Notice❗️
적용한 환경변수 활용법이 언제든지 지원 종료(deprecated) 될 수 있다.
👉 자주 사용하는 모듈에 대해 주기적인 관심을 가지고 업데이트 로그를 확인해야 한다!
const dotenv = require("dotenv")
dotenv.config()
dotenv.config()
환경변수에 입력한 typeorm과 관련된 내용을 발동시킨다
const { DataSource } = require('typeorm');
.env
파일에 저장해놓은 환경 변수들을 불러와 DataSource 명령어를 통해서 db와의 커넥션 환경 세팅을 완료한다. // 신규 클래스 인스턴스 생성: new
const myDataSource = new DataSource({
type: process.env.TYPEORM_CONNECTION,
host: process.env.TYPEORM_HOST,
port: process.env.TYPEORM_PORT,
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE
})
process 객체
node.js 에서 기본으로 설정되는 글로벌 객체.
- 별도의 require 호출 없이 언제, 어디서든지 모든 모듈에서 접근 가능.
- 별도의 설정없이 node 설치 후, init 및 run 실행 시 접근 가능.
- node.js 프로그램의 런타임 환경과 관련된 다양한 정보들을 담고 있다.
- 여기서는 환경 변수를 선언한 env 객체에 접근하여 TYPEORM 관련 환경 변수들을 끌어옴!
.env.sample
파일에도 대략적으로 입력한다
initialize()
메소드를 통해 실제 연결을 완료한다.// 데이터베이스와의 연겨르 연동을 실행
myDataSource.initialize()
// 비동기 처리를 Promise객체를 활용해 연결 여부에 대한 추후행위를 정의, 설정
.then(() => {
// DataSource 가 initialize로 잘 작동한다는 의미의 메시지
console.log("Data Source has been initialized!")
})
promise객체
이제 express프레임워크, TypeORM, mysql이 올바르게 연동되어 데이터베이스에 영구적 저장할 준비가 되었다!
설치
$ npm install mysql
$ npm install -g mysql
DB와 정상적으로 연동되었다면 아래와 같이 manager 클래스에 접근하여 query 메소드 안에 내가 원하는 쿼리문을 작성하여 실행할 수 있다
👉 manager는 빼도 된다. 오히려 빼는 게 좋다
const DataSource = myDataSource.manager.query(`SELECT * FROM USERS`)