OSS TanbouSign in with GitHub

manage SQL and MongoDB persistence in TypeScript with Unit of Work and Identity Map

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
9,244
Primary language
TypeScript
License
MIT
Repository last updated
Oct 2, 2026
On this page

Overview

MikroORM is a Node.js ORM built around Data Mapper, Unit of Work, and Identity Map patterns. It tracks TypeScript entities and flushes changes across PostgreSQL, MySQL/MariaDB, SQLite/libSQL, SQL Server, and MongoDB drivers.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Key features

Track entity changes and flush them through a Unit of Work

Its Identity Map preserves object identity for a row while the Unit of Work groups changes for transactional persistence.

Sources: [1]

Best fit

Fits Node.js services centered on TypeScript domain models

Teams can define entities with decorators or schemas and use repositories, migrations, and population across supported database drivers.

Sources: [1]

Before adoption

Design request scope, loading, and migration operations explicitly

Fork EntityManager per request, control relation loading for large graphs, and review generated schema SQL before applying it.

Sources: [1]

Official sources

  1. [1]MikroORM v7.2.3 README(2026-10-04)
  2. [2]MikroORM v7.2.3 release(2026-10-04)
  3. [3]MikroORM v7.2.3 license(2026-10-04)
Supplemental curator note

Verify transaction boundaries, loading behavior, and generated migrations with SQLite first, then test driver-specific behavior against the production database.

Try it in 3 steps

  1. 1

    Create an isolated project

    Use Node.js 22.17 or newer and create a test package without changing an existing project.

    mkdir mikro-demo && cd mikro-demo && npm init -y
  2. 2

    Install a version-matched SQLite driver

    Pin core and driver to the same release.

    npm install @mikro-orm/core@7.2.3 @mikro-orm/sqlite@7.2.3
  3. 3

    Load the public initialization API

    Verify the API import without creating a database.

    node --input-type=module -e "import('@mikro-orm/sqlite').then(({ MikroORM }) => console.log(typeof MikroORM.init))"
Check the official README

Growth

Growth trends · Last 30 days

9,244 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
146
Open PRs
5

Development activity is still being collected.

Built with

Categories and tags

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • identity-map
  • datamapper
  • orm
  • nodejs
  • typescript
  • entities
  • mongodb
  • mysql
  • typescript-orm
  • sqlite
  • sqlite3
  • javascript
Stars
9,244
Forks
679
Watchers
52
Open issues
12
Contributors
334
Owner type
Organization
Primary language
TypeScript
License
MIT
Repository last updated
Oct 2, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?