# Sequelize — Feature-Rich Node.js ORM for SQL Databases > A mature promise-based ORM for PostgreSQL, MySQL, MariaDB, SQLite, and SQL Server with transactions, relations, eager loading, and CLI migrations. ## Install Save in your project root: # Sequelize — Feature-Rich Node.js ORM for SQL Databases ## Quick Use ```bash npm install sequelize pg pg-hstore npx sequelize-cli init npx sequelize-cli db:migrate ``` ## Introduction Sequelize is one of the most established ORMs in the Node.js ecosystem, providing a solid abstraction layer over SQL databases since 2011. It offers a promise-based API with comprehensive support for transactions, associations, and schema migrations. ## What Sequelize Does - Provides model definitions that map JavaScript objects to SQL tables - Supports PostgreSQL, MySQL, MariaDB, SQLite, and Microsoft SQL Server - Handles one-to-one, one-to-many, and many-to-many associations with eager and lazy loading - Offers a migration framework via sequelize-cli for version-controlled schema changes - Includes built-in validation, hooks, and scopes for business logic ## Architecture Overview Sequelize creates a connection pool per database instance using the underlying driver. Models are defined as classes extending Model, with attributes mapped to columns. The QueryInterface generates dialect-specific SQL, while the QueryGenerator handles parameterization. Associations are resolved at query time through JOIN clauses or separate queries for eager loading. ## Self-Hosting & Configuration - Install sequelize plus the driver for your database (pg, mysql2, tedious, or better-sqlite3) - Initialize project structure with sequelize-cli init to create config, models, migrations, and seeders directories - Configure database credentials in config/config.json or use environment variables with .sequelizerc - Set dialect options like pool size, SSL, and timezone in the Sequelize constructor - Use migration files for all production schema changes; seeders for test data ## Key Features - Mature ecosystem with 13+ years of production use and extensive documentation - Raw query support with model mapping for complex SQL - Transaction support with automatic retry and CLS-based propagation - Paranoid mode for soft deletes with automatic filtering - Comprehensive validation using validator.js integration ## Comparison with Similar Tools - **TypeORM** — decorator-based, TypeScript-first; Sequelize is more JavaScript-idiomatic - **Prisma** — schema file with generated client; Sequelize uses runtime model definitions - **Knex.js** — query builder only; Sequelize adds full ORM layer with associations - **Objection.js** — built on Knex with JSON Schema; Sequelize has its own query engine - **Drizzle ORM** — newer, SQL-like API; Sequelize offers a more traditional ORM experience ## FAQ **Q: Is Sequelize still actively maintained?** A: Yes. Sequelize v7 is in active development with ESM support and improved TypeScript types. **Q: How does Sequelize handle TypeScript?** A: v6 supports TypeScript through manual type declarations. v7 improves this with better generics and InferAttributes helpers. **Q: Can I use raw SQL with Sequelize?** A: Yes. Use sequelize.query() with replacements or bind parameters, and optionally map results to model instances. **Q: How do I optimize N+1 query problems?** A: Use eager loading with the include option to fetch associations in a single JOIN query instead of separate queries. ## Sources - https://github.com/sequelize/sequelize - https://sequelize.org --- Source: https://tokrepo.com/en/workflows/041a095e-39e1-11f1-9bc6-00163e2b0d79 Author: AI Open Source