ORM für JavaScript (Node.js): Vergleich von Sequelize, TypeORM, Prisma

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

ORM für JavaScript (Node.js): Vergleich und Beispiele



Bei der Entwicklung von Serveranwendungen mit Node.js ist die Interaktion mit der Datenbank eine der zentralen Aufgaben. Object-Relational Mapping (ORM) ermöglicht die Arbeit mit relationalen Datenbanken über JavaScript-Objekte und erspart das Schreiben von reinem SQL. In diesem Artikel betrachten wir drei beliebte ORMs: Sequelize, TypeORM und Prisma, vergleichen ihre Eigenschaften und geben praktische Beispiele.



1. Sequelize



Sequelize ist eines der ältesten und ausgereiftesten ORMs für Node.js. Es unterstützt PostgreSQL, MySQL, MariaDB, SQLite und MSSQL. Es arbeitet mit Promises und async/await.



Installation und Einrichtung

npm install sequelize sequelize-clinpm install pg pg-hstore # für PostgreSQL


Beispiel für Modell und Abfragen

const { Sequelize, DataTypes } = require('sequelize');const sequelize = new Sequelize('postgres://user:pass@localhost:5432/mydb');

// Modell definierenconst User = sequelize.define('User', { name: { type: DataTypes.STRING, allowNull: false }, email: { type: DataTypes.STRING, unique: true }});

// Datensatz erstellenconst user = await User.create({ name: 'Ivan', email: 'ivan@example.com' });

// Suche mit Filterconst users = await User.findAll({ where: { name: 'Ivan' } });

// Aktualisierenawait User.update({ email: 'new@example.com' }, { where: { id: 1 } });


Vor- und Nachteile

  • + Große Community, viel Dokumentation
  • + Unterstützung für Migrationen und Seeds
  • - Umständliche Syntax für komplexe Abfragen
  • - Keine integrierte TypeScript-Unterstützung


2. TypeORM



TypeORM ist ein ORM, das auf TypeScript ausgerichtet ist, aber auch mit normalem JavaScript funktioniert. Es unterstützt Dekorateure, Active Record und Data Mapper. Es arbeitet mit den meisten gängigen DBMS.



Installation und Einrichtung

npm install typeorm reflect-metadatanpm install pg # für PostgreSQL


Beispiel für ein Modell mit Dekorateuren

import { Entity, PrimaryGeneratedColumn, Column, createConnection } from 'typeorm';

@Entity()export class User { @PrimaryGeneratedColumn() id: number;

@Column() name: string;

@Column({ unique: true }) email: string;}

// Verwendungconst connection = await createConnection();const userRepo = connection.getRepository(User);const user = await userRepo.save({ name: 'Anna', email: 'anna@example.com' });const users = await userRepo.find({ where: { name: 'Anna' } });


Vor- und Nachteile

  • + Hervorragende TypeScript-Unterstützung
  • + Zwei Ansätze: Active Record und Data Mapper
  • - Komplexe Konfiguration für Anfänger
  • - Langsame Migrationen in großen Projekten


3. Prisma



Prisma ist ein modernes ORM, das eine eigene Schema-Sprache verwendet und einen typsicheren Client generiert. Es gilt als das leistungsfähigste und entwicklerfreundlichste.



Installation und Einrichtung

npm install @prisma/clientnpx prisma init


Schema-Definition (schema.prisma)

model User {  id    Int     @id @default(autoincrement())  name  String  email String @unique}


Beispiel für Abfragen

import { PrismaClient } from '@prisma/client';const prisma = new PrismaClient();

// Erstellenconst user = await prisma.user.create({ data: { name: 'Olga', email: 'olga@example.com' }});

// Suchenconst users = await prisma.user.findMany({ where: { name: 'Olga' } });

// Aktualisierenawait prisma.user.update({ where: { id: 1 }, data: { email: 'new@example.com' }});


Vor- und Nachteile

  • + Vollständige Typsicherheit

Empfehlungen