TypeORM
은 NodeJS, 브라우저, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo, Electron 플랫폼에서 실행할 수 있으며 TypeScript 및 JavaScript (ES5, ES6, ES7, ES8)와 함께 사용할 수 있는 ORM입니다. 목표는 항상 최신 JavaScript 기능을 지원하고 다중 데이터베이스를 사용하는 모든 종류의 애플리케이션 개발을 돕는 추가 기능을 제공하는 것입니다. 작은 테이블이 몇 개 있는 애플리케이션부터 여러 데이터베이스를 사용하는 대규모 기업 애플리케이션까지 개발할 수 있습니다.
TypeORM
은 다른 JavaScript ORM과는 달리 Active Record 및 Data Mapper 패턴 모두를 지원하므로 고품질, 느슨하게 결합된, 확장 가능하고 유지보수가 용이한 애플리케이션을 가장 생산적인 방법으로 작성할 수 있습니다.
TypeORM
은 Hibernate, Doctrine 및 Entity Framework와 같은 다른 ORM에 크게 영향을 받았습니다.
그리고 더 많은 기능...
TypeORM
을 사용하면 모델이 다음과 같아집니다:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Column()
firstName: string
@Column()
lastName: string
@Column()
age: number
}
그리고 도메인 로직은 다음과 같이 작성할 수 있습니다:
const userRepository = MyDataSource.getRepository(User)
const user = new User()
user.firstName = "Timber"
user.lastName = "Saw"
user.age = 25
await userRepository.save(user)
const allUsers = await userRepository.find()
const firstUser = await userRepository.findOneBy({
id: 1,
}) // id로 찾기
const timber = await userRepository.findOneBy({
firstName: "Timber",
lastName: "Saw",
}) // firstName과 lastName으로 찾기
await userRepository.remove(timber)
또는 Active Record 구현을 사용하려면 다음과 같이 할 수 있습니다:
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm"
@Entity()
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
id: number
@Column()
firstName: string
@Column()
lastName: string
@Column()
age: number
}
그리고 도메인 로직은 다음과 같이 작성할 수 있습니다:
const user = new User()
user.firstName = "Timber"
user.lastName = "Saw"
user.age = 25
await user.save()
const allUsers = await User.find()
const firstUser = await User.findOneBy({
id: 1,
})
const timber = await User.findOneBy({
firstName: "Timber",
lastName: "Saw"
})
await timber.remove()
npm 패키지를 설치하세요:
npm install typeorm --save
reflect-metadata 쉼을 설치해야합니다:
npm install reflect-metadata --save
그리고 앱의 전역 위치 어디에서든 import해야합니다 (예 : app.ts
) :
import "reflect-metadata"
npm install @types/node --save-dev
MySQL
또는 MariaDB
를 사용하는 경우
npm install mysql --save
(대신 mysql2도 설치할 수 있음)
PostgreSQL
또는 CockroachDB
를 사용하는 경우
npm install pg --save
SQLite
를 사용하는 경우
npm install sqlite3 --save
Microsoft SQL Server
를 사용하는 경우
npm install mssql --save
sql.js
를 사용하는 경우
npm install sql.js --save
Oracle
을 사용하는 경우
npm install oracledb --save
Oracle
드라이버를 작동하려면 사이트에서 설치 지침을 따르셔야합니다.
SAP Hana
를 사용하는 경우npm install @sap/hana-client
npm install hdb-pool
SAP Hana
지원은 Neptune Software
의 후원으로 가능해졌습니다.
Google Cloud Spanner
를 사용하는 경우npm install @google-cloud/spanner --save
환경 변수 GOOGLE_APPLICATION_CREDENTIALS
를 설정하여 인증 자격 증명을 애플리케이션 코드에 제공하세요:
# Linux/macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"
# Windows
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
# KEY_PATH를 서비스 계정 키가 포함된 JSON 파일의 경로로 대체하세요.
에뮬레이터와 함께 Spanner
를 사용하려면 SPANNER_EMULATOR_HOST
환경 변수를 설정해야합니다:
# Linux/macOS
export SPANNER_EMULATOR_HOST=localhost:9010
# Windows
set SPANNER_EMULATOR_HOST=localhost:9010
MongoDB
(실험적 기능)을 사용하는 경우
npm install mongodb@^3.6.0 --save
NativeScript
, react-native
및 Cordova
를 사용하는 경우
지원되는 플랫폼의 설명서를 확인하세요.
또한 TypeScript
버전 4.5
이상을 사용하고 다음 설정을 tsconfig.json
에서 활성화해야합니다:
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
컴파일러 옵션의 lib
섹션에서 es6을 활성화하거나 @types
의 es6-shim
을 설치해야 할 수도 있습니다.
TypeORM을 시작하는 가장 빠른 방법은 CLI 명령을 사용하여 스타터 프로젝트를 생성하는 것입니다. 퀵 스타트는 NodeJS 애플리케이션에서 TypeORM을 사용하는 경우에만 작동합니다. 다른 플랫폼을 사용하는 경우, 단계별 가이드를 따르세요.
CLI를 사용하여 새 프로젝트를 만들려면 다음 명령을 실행하세요:
npx typeorm init --name MyProject --database postgres
여기서 name은 프로젝트 이름이고 database는 사용할 데이터베이스입니다. database는 다음 값 중 하나 일 수 있습니다: mysql, mariadb, postgres, cockroachdb, sqlite, mssql, sap, spanner, oracle, mongodb, cordova, react-native, expo, nativescript.
이 명령은 다음 파일이 있는 MyProject 디렉토리에 새 프로젝트를 생성합니다:
MyProject
├── src // TypeScript 코드가 있는 곳
│ ├── entity // 엔티티 (데이터베이스 모델)가 저장되는 곳
│ │ └── User.ts // 샘플 엔티티
│ ├── migration // 마이그레이션 파일이 저장되는 곳
│ ├── data-source.ts // 데이터 소스 및 모든 연결 구성
│ └── index.ts // 애플리케이션의 시작점
├── .gitignore // 표준 gitignore 파일
├── package.json // 노드 모듈 종속성
├── README.md // 간단한 readme 파일
└── tsconfig.json // TypeScript 컴파일러 옵션
기존 노드 프로젝트에서도 typeorm init
을 실행할 수 있지만, 이미 가지고 있는 일부 파일을 덮어쓸 수 있으므로 주의해야합니다.
다음 단계는 새 프로젝트 종속성을 설치하는 것입니다:
cd MyProject
npm install
종속성을 모두 설치한 후, data-source.ts 파일을 편집하여 자신의 데이터베이스 연결 구성 옵션을 입력하세요:
export const AppDataSource = new DataSource({
type: "postgres",
host: "localhost",
port: 5432,
username: "test",
password: "test",
database: "test",
synchronize: true,
logging: true,
entities: [Post, Category],
subscribers: [],
migrations: [],
})
일반적으로 대부분의 경우 host
, username
, password
, database
및 필요에 따라 port
옵션만 구성하면 됩니다.
구성을 마치고 모든 노드 모듈이 설치되면 애플리케이션을 실행할 수 있습니다:
npm start
이것으로, 당신의 애플리케이션이 성공적으로 실행되고 데이터베이스에 새로운 사용자가 삽입됩니다. 이 프로젝트를 계속해서 작업하고 필요한 다른 모듈을 통합하고 더 많은 엔티티를 생성할 수 있습니다.
ESM
프로젝트를 생성하려면 다음과 같은 npx typeorm init --name MyProject --database postgres --module esm
명령을 실행할 수 있습니다.
Express
가 설치된 더 발전된 프로젝트를 생성하려면 npx typeorm init --name MyProject --database mysql --express
명령을 실행할 수 있습니다.
docker-compose
파일을 생성하려면 npx typeorm init --name MyProject --database postgres --docker
명령을 실행할 수 있습니다.