TypeORM supports both and Data Mapper patterns,unlike all other JavaScript ORMs currently in existence,which means you can write high quality, loosely coupled, scalable,maintainable applications the most productive way.
TypeORM is highly influenced by other ORMs, such as , Doctrine and .
- entities and columns
- database-specific column types
- entity manager
- repositories and custom repositories
- clean object relational model
- associations (relations)
- eager and lazy relations
- uni-directional, bi-directional and self-referenced relations
- supports multiple inheritance patterns
- cascades
- indices
- migrations and automatic migrations generation
- connection pooling
- replication
- using multiple database connections
- working with multiple databases types
- cross-database and cross-schema queries
- elegant-syntax, flexible and powerful QueryBuilder
- left and inner joins
- proper pagination for queries using joins
- query caching
- streaming raw results
- listeners and subscribers (hooks)
- supports closure table pattern
- schema declaration in models or separate configuration files
- connection configuration in json / xml / yml / env formats
- supports MySQL / MariaDB / Postgres / CockroachDB / SQLite / Microsoft SQL Server / Oracle / sql.js
- supports MongoDB NoSQL database
- works in NodeJS / Browser / Ionic / Cordova / React Native / NativeScript / Expo / Electron platforms
- TypeScript and JavaScript support
- produced code is performant, flexible, clean and maintainable
- follows all possible best practices
- CLI
And more…
With TypeORM your models look like this:
Alternatively, if you prefer to use the implementation, you can use it as well:
And your domain logic will look this way: