ORM 개념만 정리
·
Node.js ORM
ORM을 사용하는 이유데이터베이스 ↔ 객체 매핑 자동화SQL을 사용한 Insert 혹은 Update 작업 시 작업 전에 객체 -> SQL 매핑이 필요합니다.SQL을 사용한 Read 작업 시 작업 전후로 객체 ↔ SQL 매핑이 필요합니다.ORM을 사용하면 매핑 작업이 자동화됩니다.유지보수 용이성데이터베이스 ↔ 객체 매핑이 자동화 되기 때문에 자료구조 변경 시 수정해야 하는 코드가 줄어듭니다.데이터베이스 추상화MySQL, MS SQL, Oracle, PostgreSQL 등 데이터베이스의 구현체는 많습니다.모두 ANSI SQL 표준을 지키긴 하지만 함수, 날짜 처리 등에는 다른 문법을 사용합니다.ORM을 사용하면 데이터베이스 구현체와 관계 없이 동일한 문법을 사용해 처리할 수 있습니다.엔터티(Entity)엔터..
관계(Relation)
·
Node.js ORM/TypeORM
관계(Relation)관계형 데이터베이스는 데이터 중복을 방지하기 위해 테이블간 관계를 사용합니다.테이블 간 관계에는 네 종류가 있습니다.일대일 관계(1:1, One to One)일대다 관계(1:N, One to Many)다대일 관계(N:1, Many to One)다대다 관계(N:M, Many to Many)PL/SQL이나 MyBatis를 사용하던 사람들에게 팁데이터베이스 테이블은 부모 자식 관계가 없습니다.하지만 ORM에는 부모 자식 관계가 있다고 생각하세요.@JoinColumn()외래키를 지정하는 데코레이터입니다.외래키를 가지고 있는 테이블의 외래키 컬럼에 사용합니다.여러 컬럼을 외래 키로 지정해야 할 때@ManyToOne(type => Category)@JoinColumn([ { name: "ca..
저장소(Repository)
·
Node.js ORM/TypeORM
저장소(Repository)저장소는 데이터베이스 CRUD 작업 시 사용하는 인터페이스를 의미합니다.저장소는 동작시 구체적인 엔티티를 참조합니다.CRUD란?C; Create(insert)R; Read(select)U; Update(update)D; Delete(delete)저장소 사용 예시(NestJS)posts.module.tsimport { Module } from '@nestjs/common';import { TypeOrmModule } from '@nestjs/typeorm';import { PostsService } from './posts.service';import { PostsController } from './posts.controller';import { Post } from './po..
엔터티(Entity)
·
Node.js ORM/TypeORM
엔터티(Entity)엔터티는 데이터베이스의 테이블을 정의하는 클래스입니다.엔터티 데코레이터데코레이터설명@Entity()테이블 선언@ViewEntity()뷰 테이블 선언@Index()인덱스 선언@Unique()고유값 제약 조건 선언@ForeignKey()외래키 선언컬럼 데코레이터데코레이터설명@PrimaryColumn()PK@PrimaryGeneratedColumn()auto increament PK (number 타입)@PrimaryGeneratedColumn(’uuid’)uuid를 사용하는 PK (string 타입)@Column()@Column("int")@Column({ type: "int" })@Column("varchar", { length: 200 })컬럼DB 별 지원 자료형은 https://ty..
TypeORM 환경 설정
·
Node.js ORM/TypeORM
패키지 설치npm install typeorm # typeorm 설치npm install @nestjs/typeorm # nestjs를 사용한다면 이것도 같이 설치npm install typeorm-naming-strategies # 카멜케이스와 스네이크 케이스 매핑# 데이터베이스 드라이버 설치npm install pg # PostgreSQL or CockroachDBnpm install mysql # MySQL or MariaDBnpm install sqlite3 # SQLitenpm install mssql # Microsoft SQL Servernpm install oracledb # OracleNestJS 환경 설정옵션type데이터베이스 종류database데이터베이스 이름host데이터베이스 IPp..