[Next.js] Prisma & MySQL μμνκΈ° πΈ
What is Prisma ? π±
Prisma
λ,
Node.js μ TypeScript μμ μ¬μ©ν μ μλ λ°μ΄ν°λ² μ΄μ€ ν΄ν·
μ°¨μΈλ ORM
(Object Relational Mapping) νλ μμν¬μ΄λ€.
SQL μ½λλ₯Ό μ°μ§ μκ³ ,
Javascript(typescript λ κ°λ₯) μ½λλ₯Ό μμ±νμ¬ λ°μ΄ν°λ² μ΄μ€λ₯Ό μμ ν μ μλλ‘ μ°κ²°ν΄μ£Όλ μλΉμ€ μ΄κΈ°λνλ€.
ORM ?
Prisma
λ ORM μ΄μ§λ§,
κΈ°μ‘΄ ORM κ³Ό κ·Όλ³Έμ μΌλ‘ λ€λ₯Έ ORM μ΄λ©°,
λ°μνλ μ¬λ¬ λ¬Έμ λ Prisma λ₯Ό ν΅ν΄ ν΄κ²°ν μ μλ€κ³ νλ€.
https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/is-prisma-an-orm
ORM
μ,
DBλ°μ΄ν° (Schema) λ₯Ό κ°μ²΄ (Object) λ‘ λ§€νν΄μ£Όλ μν μ νμ¬,
λͺ¨λΈλ§λ κ°μ²΄μ κ΄κ³λ₯Ό λ°νμΌλ‘ SQL μ μλμΌλ‘ μμ± ν΄ μ£Όλ λꡬλΌκ³ νλ€.
init πΌ
λ¨Όμ ,
Next.js
μ±μ npx create-next-app
λͺ
λ Ήμ ν΅ν΄ μ€μΉ ν΄ μ€λ€.
κ° μ΅μ μ μ·¨ν₯ μ‘΄μ€ !
npx
λͺ
λ Ήμ ν΅ν΄ next.js
μ±(13 ver) μ μ€μΉ νλ€λ©΄,
μλμ κ°μ νμΌκ΅¬μ‘°λ₯Ό νμΈν μ μλ€.
Prisma π
μ€μΉν Next
μ±μΌλ‘ μ§μ
νμ¬ Prisma
λ₯Ό μ€μΉ ν΄ μ€λ€.
μ€μΉν Prisma λ₯Ό init(μ΄κΈ°ν) νμ¬ νμΌκ΅¬μ‘°μ Prisma
μ .env
κ° μμ±λ¨μ νμΈνλ€.
DB μ€μ β οΈ
μμ±λ Prisma
λλ ν 리λ₯Ό νμΈ ν΄ λ³΄λ©΄,
schema.prisma
νμΌμ΄ μ‘΄μ¬νλλ°,
μ¬κΈ°μμ λ°μ΄ν°λ² μ΄μ€ (DB) μ°κ²°μ 보λ₯Ό μΆκ° ν΄ μ€λ€.
Defalut DB λ
PostgreSQL
λ‘ μ§μ λμ΄μλ€.
PostgreSQL
μ MySQL
λ‘ λ³κ²½ ν΄ μ£Όκ³ μ μ₯ !
datasource db
μλ μ μλμ΄μλ―,
env
μμ DATABASE_URL
μ λΆλ¬μ¨λ€.
.env
νμΌμμ DB μ°κ²°μ 보λ₯Ό μΆκ° ν΄ μ€λ€.
DATABASE_URL="mysql://username:password@localhost:3306/myDatabase"
ν¬νΈλ²νΈ λ€μλ μ€μ μ¬μ©ν ν μ΄λΈ λͺ μ μ§μ ν΄μ€λ€.
μ΄μ λ°μ΄ν° λͺ¨λΈμ μ€μ ν΄ μ£Όμ΄μΌνλλ°,
schema.prisma
μ μλμ κ°μ΄ λͺ¨λΈμ μ μ ν΄ μ€λ€.
μ§μ ν λͺ¨λΈμ λ§μ΄κ·Έλ μ΄μ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ μ€μ μ¬μ©λ DB μ λκΈ°ν μμ μ ν΄ μ£Όμ΄μΌ νλ€.
yarn prisma migrate dev --name init
λ§μ½ μλ¬ β κ° λ°μνλ€λ©΄ !?
πππ
λ§μ΄κ·Έλ μ΄μ
λͺ
λ Ήμ΄λ₯Ό μ€ννλλ,
generators
κ° μ€νλμ§ μλλ€λ μλ¬κ° λ°μνλ€.
λ©μΈμ§μ μΆλ ₯λλλ‘ prisma/client
λ₯Ό μ€μΉ ν΄ μ€λ€.
yarn add @prisma/client
λ€μ λ§μ΄κ·Έλ μ΄μ λͺ λ Ήμ΄λ₯Ό μ€ννλ©΄,
prisma
νμΌνΈλ¦¬μμ λ§μ΄κ·Έλ μ΄μ
λ SQL νμΌμ νμΈν μ μλ€.
βοΈβοΈβοΈ
(μ΄κ±΄ DB μμλ νμΈ κ°λ₯ !)
root
μ΄λ¦μ localhost:3306 κΈ°λ³Έ ν¬νΈλ‘ μ΄λ¦° 컀λ₯μ
μ μ κ·Ό ν΄ λ³΄λ©΄,
.env
μ μ μν next_mariaDB
DB κ° μμ±λ¨μ νμΈν μ μλ€.
κ·Έ μλμλ λ§μ΄κ·Έλ μ΄μ
λ μ§μ ν notice
ν
μ΄λΈμ΄ μ‘΄μ¬νλ€.
ν΄λΉ ν¬μ€ν
μ ν΅ν΄
λ°μ΄ν°λ² μ΄μ€μ Prisma
λ₯Ό μ¬μ©νμ¬ μ κ·Ό λ° μ μ΄ ν΄ λ³Ό μ μμκ³ ,
λ€μ ν¬μ€ν
μμλ μλ² μμ΄,
Prisma Client
λ₯Ό μ€μΉνμ¬ DB λ₯Ό μ‘°μνκ³ , CRUD μ μμ
κ³Όμ μ λ΄μλ³΄λ €νλ€.
Reference π
https://defineall.tistory.com/853
https://jake-seo-dev.tistory.com/171
https://velog.io/@iamhayoung/prisma-schema
<