* PRISMA ?
- ORM* 라이브러리중 하나다. TypeScript 기반 프레임워크(node)에서 사용하도록 만들어졌다.
먼저 schema.prisma 파일로 데이터베이스 모델(스키마)을 정의하고,
그런 다음 Prisma Client를 통해서 프로젝트에서 데이터베이스 쿼리를 다룰 수 있게 한다.
* ORM이란?
- ORM(Object Relational Mapping)은 객체 지향 프로그래밍 언어(예: Java, JavaScript/TypeScript, Python 등)에서 데이터베이스의 테이블 구조를 코드의 클래스나 객체로 매핑해주는 라이브러리다.
예를 들어, 데이터베이스에 users라는 테이블이 있다고 해보자.
ORM을 쓰면, 코드 상에서 User라는 객체(또는 클래스)로 users 테이블을 다룰 수 있다.
SELECT * FROM users WHERE id=1 과 같은 SQL 쿼리를 쓸 필요 없이,
User.findUnique({ where: { id: 1 } }) 와 같은 식으로 프로그래밍 언어처럼 쓸 수 있다.
* 사용시 장점?
1. Prisma 같은 ORM 라이브러리를 쓰면, 코드가 더 깔끔해지고, 데이터베이스 의존성을 줄이면서* 재사용성 및 유지보수성이 증가하고 타입 안전성이나 자동 완성 같은 이점이 있다. 모델과 컨트롤러의 분리를 더 견고히 할수 있게 된다.
* 데이터베이스 의존성을 줄인다?
- 예를 들어, mySQL => SpostqreSQL로 DBMS를 바꾼다고 했을 때,
sql 쿼리 문법을 사용하는 경우 -> 쿼리 자체를 바꿔야 함
orm을 사용하는 경우 DB -> ORM에서 설정만 조금 바꾸거나, datasource.provider만 변경해주면 됨 (ORM이 내부적으로 다른 DB 커넥션/쿼리를 처리)
따라서 orm을 사용하는 경우는 비즈니스 로직은 크게 바꾸지 않아도 된다.
* 결론
PRISMA는 node 환경에서 사용하며, 데이터베이스에 직접 쿼리(SQL)를 날리는 대신에, 프로그래밍 언어스러운 문법을 이용해서 더 쉽게 데이터를 조회·추가·수정·삭제 등을 할 수 있도록 해주는 아이다.
* 내 생각
굳이 orm을 써야할까?
-> 어찌됐든 한번 더 거치는것보단 바로 sql로 때리는게 성능상 더 좋지 않을까?.? (1차원적)
-> 새로운 문법을 익혀야 하는데 거기에 또 공수가 들어간다.
==> 하지만 반드시 필요한 상황이 있고, 리스크가 분명 있을 텐데 그럼에도 불구하고 유행하는데는 이유가 있겠지 싶다.
예전에 회사에서 했던 플젝 중에.. 몽고디비랑 마리아디비를 같이 써야 하는 상황이어서 쿼리문 작성할때 너무 헷갈렸던 경험이 있다. (이때 orm을 썼으면 좋았을것 같다)
소규모 프로젝트에서는 굳이 싶으나, 그래도 분명 쓰면 좋은 상황이 있기 때문에.. 포폴용 또는 학습 목적으로 하는 경우라면 츄라이 해볼만하다고 본다!
굳이 prisma를 써야 할까?
-> 안써봐서 모르겠따! 시퀄라이즈 써봤을때도 소규모에서만 적용해봐서 그런지 장점이 잘 체감이 안됐고,, 오히려 이걸 왜 굳이 써야하지 라는 생각만 들었다.
나는 DX도 아주 중요한 것 중 하나라고 생각하는데, 대략 찾아보니 일단 사용 방법이 쉬워보여서 기대가 된다!
'typescript' 카테고리의 다른 글
[typescript] 인덱스 시그니처 정의 (1) | 2024.07.11 |
---|---|
[typescript] ~형식의 매개 변수에 할당될 수 없습니다. 'scending' 속성의 형식이 호환되지 않습니다. 'string' 형식은 '"desc" | "asc"' 형식에 할당할 수 없습니다. (3) | 2024.07.08 |
[typescript] 인터페이스 재활용하 (0) | 2024.07.04 |
[Typescript] interface의 키 값 자체를 타입으로 지정하기 (0) | 2024.07.03 |