Einführung in Prisma: moderner ORM für TypeScript
\n\nPrisma ist ein moderner ORM (Object-Relational Mapping) für TypeScript und Node.js, der die Arbeit mit Datenbanken grundlegend verändert. Im Gegensatz zu traditionellen ORMs wie Sequelize oder TypeORM bietet Prisma ein deklaratives Datenmodell, automatische Typgenerierung und eine intuitiv verständliche API. Die Bibliothek unterstützt PostgreSQL, MySQL, SQLite, SQL Server, MongoDB und CockroachDB.
\n\nDas Hauptziel von Prisma ist es, die Arbeit mit Datenbanken sicher, leistungsstark und komfortabel zu gestalten. Dank der Integration mit TypeScript erhalten Sie Autovervollständigung und Typprüfung auf Kompilierungsebene, was die Anzahl der Laufzeitfehler erheblich reduziert. Prisma besteht aus drei Schlüsselkomponenten:
\n\n- \n
- Prisma Client — ein automatisch generierter Client für die Arbeit mit der Datenbank \n
- Prisma Migrate — ein System zur Verwaltung von Migrationen \n
- Prisma Studio — eine grafische Benutzeroberfläche zum Anzeigen und Bearbeiten von Daten \n
Installation von Prisma
\n\nDie Installation von Prisma in ein TypeScript-Projekt erfolgt über npm. Erstellen Sie zunächst ein neues Projekt:
\n\nmkdir my-prisma-project\ncd my-prisma-project\nnpm init -y\n\nInstallieren Sie die Prisma CLI und den Prisma Client:
\n\nnpm install prisma @prisma/client --save\n\nInitialisieren Sie Prisma im Projekt:
\n\nnpx prisma init\n\nDieser Befehl erstellt ein Verzeichnis prisma mit der Datei schema.prisma und eine Datei .env für Umgebungsvariablen.
Schnellstart: Codebeispiel
\n\nBetrachten wir die Erstellung einer einfachen Anwendung zur Benutzerverwaltung. Definieren wir zunächst das Modell in prisma/schema.prisma:
generator client {\n provider = "prisma-client-js"\n}\n\ndatasource db {\n provider = "sqlite"\n url = env("DATABASE_URL")\n}\n\nmodel User {\n id Int @id @default(autoincrement())\n email String @unique\n name String?\n posts Post[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Post {\n id Int @id @default(autoincrement())\n title String\n content String?\n published Boolean @default(false)\n author User @relation(fields: [authorId], references: [id])\n authorId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nFühren Sie die Migration aus, um die Tabellen in SQLite zu erstellen:
\n\nnpx prisma migrate dev --name init\n\nErstellen Sie nun eine Datei index.ts mit einem Anwendungsbeispiel:
import { PrismaClient } from '@prisma/client'\n\nconst prisma = new PrismaClient()\n\nasync function main() {\n // Benutzer erstellen\n const user = await prisma.user.create({\n data: {\n email: 'alice@example.com',\n name: 'Alice',\n posts: {\n create: { title: 'Hello World' }\n }\n }\n })\n console.log('Created user:', user)\n\n // Alle Benutzer mit ihren Beiträgen abrufen\n const users = await prisma.user.findMany({\n include: { posts: true }\n })\n console.log('All users:', JSON.stringify(users, null, 2))\n}\n\nmain()\n .catch(e => console.error(e))\n .finally(async () => await prisma.$disconnect())\n\nFühren Sie den Code aus:
\n\nnpx ts-node index.ts\n\nGrundlegende Methoden des Prisma Client
\n\n1. findUnique
\nWas es tut: Findet einen einzelnen Datensatz anhand einer eindeutigen Kennung (id, email usw.).
\nParameter:
\n- \n
where— ein Objekt mit Suchbedingungen (erforderlich) \n include— (optional) zum Einbeziehen verwandter Modelle \n select— (optional) zur Auswahl bestimmter Felder \n
Beispiel:
\nconst user = await prisma.user.findUni Auch in der Bibliothek
HTML-Parsing in C# (.NET): Bibliotheken HtmlAgilityPack und AngleSharp
Aufgabenwarteschlangen in C# (.NET): System.Threading.Channels, Hangfire und RabbitMQ
Arbeiten mit Apache Kafka in C++: Die Bibliothek librdkafka und praktische Beispiele
Thymeleaf Java-Tutorial: Methoden, Beispiele & Installation