-
Notifications
You must be signed in to change notification settings - Fork 2
Prisma Documentation
Myukang edited this page Sep 4, 2023
·
1 revision
- 익숙한, typeorm과 비교해서 설명드리겠습니다.
import {
Entity,
PrimaryGeneratedColumn,
Column,
OneToMany,
ManyToOne,
} from 'typeorm'
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Column({ nullable: true })
name: string
@Column({ unique: true })
email: string
@OneToMany((type) => Post, (post) => post.author)
posts: Post[]
}
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number
@Column()
title: string
@Column({ nullable: true })
content: string
@Column({ default: false })
published: boolean
@ManyToOne((type) => User, (user) => user.posts)
author: User
}
model User {
id Int @id @default(autoincrement())
name String?
email String @unique
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
authorId Int?
author User? @relation(fields: [authorId], references: [id])
}
- TypeOrm의 스키마 선언은 비효율적으로 큽니다.
- Prisma Scheme에 의해 정의된 TypeSafety한 API를 제공합니다.(런타임에 판단하지 않습니다.)
- Prisma DSL(prisma의 스키마 정의 언어)는
매우 간단하고 직관적
입니다.
Prisma는 다음과 같은 구조로 되어있습니다.
- Binary Engine은
커넥션풀을 들고
우리의 ORM code를 RAW SQL로 바꿔주는 중요한 프로그램
-
Binary
이기때문에CPU arch와 OS
에 따라 수많은 버전이 있습니다. binary target references
Binary Target | debian-openssl-3.0.x | linux-musl-openssl-3.0.x | linux-musl-arm64-openssl-3.0.x |
운영체제 | Ubuntu | Alpine(Intel) | Alpine(ARM) |
사용처 | github action/instances | local(cluster) | local(ARM MAC) |
- 기본 골자로 이 engine은 배포하는 인스턴스 아키텍처 변경/작업 환경의 극단적 변화(클러스터 맥의 운영체제가 리눅스로 바뀌는)가 없다면 고정적일 것입니다.