들어가며
최근 개발 환경에서 데이터베이스와의 상호 작용은 핵심적인 부분을 차지하고 있습니다. 이를 위해 많은 개발자들은 ORM(객체 관계 매핑)을 사용하여 데이터베이스와의 상호 작용을 편리하게 만들고 있습니다. 그 중에서도 Prisma는 현대적이고 강력한 ORM 도구로 자리매김하고 있습니다.
Prisma란?
Prisma는 TypeScript와 JavaScript를 지원하는 현대적인 ORM이며, 데이터베이스 쿼리 작성을 단순화하고 유연성을 제공합니다. Prisma를 사용하면 SQL 쿼리를 직접 작성할 필요 없이 자바스크립트 코드로 데이터베이스를 쉽게 다룰 수 있습니다. Prisma는 성능 최적화와 타입 안정성을 강조하여 개발자가 안전하게 데이터베이스에 접근할 수 있도록 지원합니다.
Object Relational Mapping, 객체와 데이터베이스의 관계를 매핑해주는 도구
Prisma 이외에도 TypeORM, Sequelize, Django ORM 등이 있다.
Prisma 초기 세팅
1. 설치
// 개발자 모드로 설치하는 명령어
npm i prisma -D
// prisma 폴더를 생성, schema.prisma 파일을 만들어 기본적인 설정을 구성하는 명령어
npx prisma init
2. 설정 파일
// schema.prisma
generator client {
provider = "prisma-client-js"
}
// 데이터 모델 정의 예시
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
userId Int
user User @relation(fields: [userId], references: [id])
}
3. 기본 명령어
1. 마이그레이션 생성
npx prisma migrate save --name init --experimental
2. 마이그레이션 적용
npx prisma migrate up --experimental
3. Prisma Client 생성
npx prisma generate
4. Prisma Studio 실행
npx prisma studio
5. Prisma Migrate Rollback
npx prisma migrate reset --experimental
6. Client 활용
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function main() {
const user = await prisma.user.findUnique({
where: {
id: 1,
},
});
console.log(user);
}
main()
.catch(e => {
throw e;
})
.finally(async () => {
await prisma.$disconnect();
});
마치며
Prisma를 활용한 데이터베이스 관리는 개발자들에게 강력하고 현대적인 도구를 제공합니다. ORM의 편리함과 Prisma의 성능 최적화가 결합되어 데이터베이스 작업이 더욱 효율적이고 안전해졌습니다.
Prisma를 통해 데이터 모델을 정의하고, 마이그레이션을 수행하며, 안전하고 타입 안정성 있는 코드로 데이터베이스와 상호 작용하는 방법에 대해 소개했습니다. 최신 개발 트렌드를 반영한 Prisma는 여러분의 프로젝트를 현대적이고 안전한 방식으로 관리할 수 있도록 도와줍니다.
'PROGRAMMING > Database' 카테고리의 다른 글
[PostgreSQL] 특징과 비교 그리고 기본 명령어 (feat. MySQL) (0) | 2023.10.01 |
---|---|
[postgres] Table 조회 오류시 해결 방법(relation "table" does not exist) (20) | 2023.05.21 |
[Database] 파티셔닝과 샤딩 그리고 레플리케이션(feat.분산 저장 기법, 수평, 수직, 튜닝) (50) | 2023.03.27 |
[Database] 관계형 데이터베이스 RDB, 키 | 인덱스 | 무결성 | 조인 | 정규화 | 트랜잭션 (44) | 2023.03.23 |
[Database] MongoDB, 정의 | 특징 | 장단점 | Mac/Window 설치방법 | 명령어 | 문법 | 예제코드 (feat. CRUD, NoSQL, Collection, Document) (55) | 2023.02.21 |