어릴 때 공부 좀 열심히 할걸.. 이라는 현타가 온다
고기도 먹어 본 놈이 안다고 공부와 손 땐지 오래인 난 앉아있는 시간이 길어도 집중력과 기억력이 낮은 것 같다...🤮
에휴 자책할 시간에 조금이라도 더 집중하자
[ 오늘 푼 알고리즘 코드카타 ]
점점 어려워지는 알고리즘.. 그래도 푸는 재미가 있다.
밑의 내용은 오늘 진행한 강의를 정리한 것이다.
아 세상... 외울게 너무 많습니다.
ORM 객체지향언어에서 사용하는 객체와 관계형 데이터베이스에서 사용하는 테이블을 자동으로 연결해주는 기술입니다. 데이터베이스를 다룰 때 SQL을 직접 작성하지 않고 객체지향방식으로 데이터를 처리하죠.
처음 모델링할 때 빼고는 편한 것 같습니다.
Prisma
는 ORM 도구 중 하나입니다. JS 환경 뿐 아니라 TypeScript 에서도 사용이 가능하며 학습하기 쉬운 도구이라고는 하나... 넵 ..
schema.prisma
파일은 prisma
가 사용할 데이터베이스 설정정보를 정의하는 파일입니다. 최초 파일은 datasource
와 generator
로 이루어져 있죠.
datasource
는 DB정보와 주소를 설정할 수 있고, generator
는 prisma
가 어떤 코드를 자동생성할지 지정하는 역할을 합니다.
우리는 prisma-client-js
를 사용할 예정이지만, 그 외에 prisma-migrate
, prisma-studio
등이 있다고 합니다.
데이터베이스 URL의 경우
protocol://BaseURL/path/args
로 구성되며, 예시로
mysql://root:password@localhost:port/dbname?connection_limit=5
로 쓸 수 있습니다.
model 구문은 Prisma
가 사용할 DB의 테이블 구조를 정의하기 위하여 사용됩니다.
위에 쓰인 schema.prisma
파일에 작성합니다.
// schema.prisma
model Products {
productId Int @id @default(autoincrement()) @map("productId")
productName String @unique @map("productName")
price Int @default(1000) @map("price")
info String? @map("info") @db.Text
createdAt DateTime @default(now()) @map("createdAt")
updatedAt DateTime @updatedAt @map("updatedAt")
@@map("Products")
}
왼쪽에 쓰인 이름은 node.js 내에서 사용될 이름이고, @map()에 써있는 이름은 MySQL 내에서 사용될 이름입니다.
npx prisma db push
위와 같이 모델을 작성하고, 터미널에서 push 명령어를 입력하면 제네레이트가 같이 실행됩니다.
실제 데이터베이스에 반영되어 새로운 테이블을 만들거나 구조 변경 시 사용할 수 있습니다.
Prisma는 데이터베이스와의 상호작용을 위해 다양한 CRUD 메서드를 제공합니다.
새로운 레코드를 데이터베이스에 생성합니다.
await prisma.user.create({ data: { name: "Gdori" } });
여러 레코드를 데이터베이스에서 조회합니다.
await prisma.user.findMany();
기존의 레코드를 수정합니다.
await prisma.user.update({ where: { id: 1 }, data: { name: "Gsooni" } });
특정 레코드를 삭제합니다.
await prisma.user.delete({ where: { id: 1 } });