ORM이란?
TypeORM이란?
TypeORM은 현재 존재하는 다른 모든 JavaScript ORM과 달리 Active Record 및 Data Mapper 패턴을 모두 지원합니다. 즉, 고품질의 느슨하게 결합된 확장 가능하고 유지 관리 가능한 응용 프로그램을 가장 생산적인 방식으로 작성할 수 있습니다. -TypeORM 공식문서-
모델에 쿼리 메소드를 정의하고, 정의된 메소드로 데이터 베이스에 접근할 수 있다
import { BaseEntity, Entity, PrimaryGeneratedColumn, Column } from "typeorm"
@Entity()
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
id: number
@Column()
firstName: string
@Column()
lastName: string
@Column()
isActive: boolean
static findByName(firstName: string, lastName: string) {
return this.createQueryBuilder("user")
.where("user.firstName = :firstName", { firstName })
.andWhere("user.lastName = :lastName", { lastName })
.getMany()
}
}
위의 코드처럼 모델에 메소드를 정의한 후 구현된 메소드로 데이터 베이스에 접근할 수 있다.
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Column()
firstName: string
@Column()
lastName: string
@Column()
isActive: boolean
}
위의 코드처럼 모델을 정의한 후
const userRepository = dataSource.getRepository(User)
// example how to save DM entity
const user = new User()
user.firstName = "Timber"
user.lastName = "Saw"
user.isActive = true
await userRepository.save(user)
// example how to remove DM entity
await userRepository.remove(user)
// example how to load DM entities
const users = await userRepository.find({ skip: 2, take: 5 })
const newUsers = await userRepository.findBy({ isActive: true })
const timber = await userRepository.findOneBy({
firstName: "Timber",
lastName: "Saw",
})
repository를 가져와 데이터 베이스에 접근할 수 있다.