직접 DB를 다뤄야 하는 순간이 찾아왔고 그렇게 Prisma를 처음 접하게 되었다.
처음부터 무엇인지에 대한 감은 전혀 잡히지 않았기에 이렇게 정리해보며 다시 공부해보고자 한다.
Prisma는 ORM으로, 객체를 스키마(schema)로 정의한 다음 그 객체와 내가 선택한 데이터베이스를 연결시켜주는 매개체이다.
여기서 처음 듣는 단어인 ORM이 무엇인지에 대해 짚고 넘어가보자
ORM은 👉 데이터베이스를 코드(객체)처럼 다루게 해주는 개념이다.
기존 방식에서는 DB에 접근할 때 SQL을 직접 작성해야 했다.
'어떤 데이터를 어떻게 가져올지'를 쿼리로 직접 표현했던 반면 ORM을 사용하면 DB를 직접 다루는 대신 코드에서 정의한 모델을 기준으로 데이터를 다룬다.
SQL 방식 → DB 중심
ORM 방식 → 코드(객체) 중심
즉, ORM은 DB를 다루는 방식을 "쿼리"에서 "객체"로 바꿔주는 역할을 한다.
이로 인하여 SQL 작성 부담이 줄어들고, 코드 흐름 안에서 데이터를 다룰 수 있게 되는 것이다.
ORM의 개념에 대해 정리를 해보았고, 다시 돌아와 Prisma를 보자.
Prisma는 그것을 실제로 사용할 수 있게 해주는 도구이다
단순히 DB에 연결하는 역할이 아닌
그럼 어떻게 연결을 해줄까?
1. schema로 구조 정의
2. DB에 반영
3. 코드에서 사용
먼저 schema.prisma 파일에서 DB 구조를 정의한다.
이곳에서
schema를 작성한 뒤에 이 내용을 실제 DB에 반영해야 한다.
이 과정을 migration이라고 한다.
DB가 생성되면 이제 Prisma Client를 통해 데이터를 다룬다.
예를 들어 User 데이터를 조회한다고 하면
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
async function getUsers() {
const users = await prisma.user.findMany();
console.log(users);
}
getUsers();
user라는 모델을 기준으로 findMany() 메서드를 호출해서 데이터를 가져온다.또 다른 예시로 데이터를 생성할 수도 있다.
await prisma.user.create({
data: {
email: "test@test.com",
},
});
Prisma를 다시 정리해보면,
코드로 DB 구조 정의 → DB에 반영 → 코드로 데이터 사용
SQL을 대신하여 코드로 작업할 수 있게 해준다는 점에서 마음에 들기도 했다.
하지만 가장 중요한 데이터베이스 관련 개념이 정리되어있지 않으면 제대로 사용할 수 없기에 이것에 대한 복습도 필요해보인다.