Sequelize, TypeORM и другие…
ORM (объектно-реляционное сопоставление) - это метод, который помогает запрашивать данные из баз данных и манипулировать ими с использованием объектно-ориентированной парадигмы. В настоящее время разработчики любят использовать ORM по нескольким причинам, например:
- Поскольку нам нужно писать модель данных только в одном месте, проще обновлять, поддерживать и повторно использовать код.
- Заставляет писать код MVC, что делает ваш код чище.
- Нет необходимости писать SQL-запросы.
- Нет необходимости часто менять уровень базы данных.
- Большая часть работы автоматизирована.
Но есть и недостатки ORM.
- Проблема с производительностью сложных запросов.
- Интеграция и обучение.
Несмотря на эти недостатки, использование ORM становится все более популярным среди разработчиков, и теперь существует ряд библиотек. В этой статье я расскажу о 5 библиотеках ORM, которые вы можете использовать для разработки JavaScript.
1. Продолжить
Sequelize - хорошо известная основанная на обещаниях ORM Node.js, которую можно использовать с MySQL, MariaDB, SQLite, а также с Microsoft SQL Server и Postgres. (ORM на основе обещаний означает, что он поддерживает обещания NodeJS). Sequelize предоставляет разработчикам большой набор функций, и эта библиотека стала более известной благодаря этим функциям.
Мы можем перечислить несколько основных преимуществ / особенностей Sequelize следующим образом.
- На основе обещаний
- Поддержка многих систем баз данных.
- Сопровождение сделки
- Синхронизация базы данных
- Миграция базы данных
- Проверка модели
- Необработанные запросы
- Посев данных
- Нетерпеливые отношения
- Легко проверить
Как видите, у использования Sequelize в качестве ORM есть много плюсов, и он также содержит обширную документацию. Итак, если вы ищете стабильную ORM для своего проекта, сиквелиз - один из лучших из всех.
2. TypeORM
TypeORM был представлен примерно в 2016 году, и его популярность стремительно растет в последние 2, 3 года. Основная причина такой популярности заключается в том, что TypeORM в значительной степени поддерживает TypeScript и JavaScript (ES5, ES6, ES7, ES8). TypeORM заявляет, что цель состоит в том, чтобы продолжать поддерживать новейшие функции JavaScript и предоставлять новые функции, которые помогут разработчикам работать с любыми технологиями. Кроме того, TypeORM также поддерживает широкий спектр систем управления базами данных, включая MySQL, MariaDB, Postgres, CockroachDB, SQLite, Microsoft SQL Server, Oracle, SAP Hana, sql.js и MongoDB.
Еще одна особенность TypeORM по сравнению с другими ORM JavaScript заключается в том, что он поддерживает шаблоны Active Record и Data Mapper. Это позволяет разработчикам писать коды в высококачественных, слабосвязанных, масштабируемых приложениях. Некоторые другие функции TypeORM можно перечислить следующим образом:
- Он может работать на платформах NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo и Electron.
- Использование нескольких подключений к базе данных.
- Конфигурация подключения в форматах JSON / XML / YML / ENV.
- Жадные и ленивые отношения.
- Однонаправленные, двунаправленные и самодостаточные отношения.
- Пул соединений.
- Менеджер сущности
- Элегантный синтаксис, гибкий и мощный QueryBuilder.
Вы можете найти полный список функций TypeORM, прочитав их документацию, и я должен заявить, что если вы любитель TypeScript, это наиболее подходящий ORM для вас.
3. Мангуст
Я уверен, что каждый из вас слышал или работал с Mongo DB, системой баз данных NoSQL на основе документов. Mongoose - это инструмент объектного моделирования, специально разработанный для Mongo DB. Таким образом, это сильно отличается от Sequelize и TypeORM, поскольку они поддерживают более одной системы управления базами данных.
Однако Mongo DB предназначена для работы в асинхронной среде и поддерживает как обещания, так и обратные вызовы. Необязательно использовать mongoose с Mongo DB все время, но есть некоторые преимущества его использования с Mongo DB.
- Mongoose определяет схему для ваших моделей данных, чтобы ваши документы следовали определенной структуре с предопределенными типами данных.
- Mongoose имеет встроенную проверку определений схемы.
- Mongoose предоставляет дополнительные операции до и после продажи для моделей данных. Это упрощает определение перехватчиков и настраиваемых функций при успешном чтении / записи и т. Д.
- Mongoose упрощает возврат обновленных документов или результатов запроса.
С другой стороны, использование mongoose не рекомендуется для сложных запросов. В таких случаях не только сложно писать запросы с использованием мангуста, но также это может снизить производительность программы. Если вы используете Mongo DB, то почему бы вам не попробовать мангуста?
4. Книжная полка
Книжная полка - это новая (по сравнению с 3 предыдущими ORM) JavaScript ORM для NodeJS, построенная на построителе SQL-запросов Knex и поддерживающая системы управления базами данных PostgreSQL, MySQL и SQLite3.
Задача книжной полки - предоставить простую библиотеку для общих задач при запросах к базам данных в JavaScript и формировании отношений между этими объектами. Книжную полку легко читать, понимать и расширять, и она также не заставляет вас использовать какую-либо конкретную схему проверки.
Некоторые особенности Книжной полки:
- Поддерживает обещания.
- Поддерживает обратные вызовы.
- Сопровождение сделки.
- Загрузка отношения нетерпеливого / вложенного-нетерпеливого.
- Полиморфные ассоциации.
- Поддержка отношений «один к одному», «один ко многим» и «многие ко многим».
5. Возражение
Objection JS - это еще одна развивающаяся ORM для NodeJS, которая помогает с легкостью использовать всю мощь SQL и его движка базы данных. Точнее представить возражение как построитель реляционных запросов. Objection предоставляет все преимущества построителя SQL-запросов, а также мощный набор инструментов для работы с отношениями. Как и книжная полка, возражение также построено на построителе запросов SQL Knex и поддерживает системы управления базами данных PostgreSQL, MySQL и SQLite3.
Мы можем указать на некоторые особенности возражений следующим образом:
- Официальная поддержка машинописного текста.
- Необязательная проверка схемы JSON.
- Простые методы для выборки, вставки, обновления и удаления объектов с использованием возможностей SQL.
- Простые в использовании транзакции.
- Автоматическое создание схемы базы данных и перенос из определений модели.
- Полностью объектно-ориентированное представление вашей базы данных.
6. Бонус
После публикации статьи я получил очень положительные отзывы от читателей, и некоторые из них предложили несколько других библиотек ORM, которые они используют. Итак, я подумал об упоминании этих библиотек в статье, чтобы убедиться, что никто не пропустит их.
- Mikro-ORM: ORM TypeScript для Node.js на основе паттернов Data Mapper, Unit of Work и Identity Map. (Предложено Антуаном П.)
- Prisma: Node.js нового поколения и TypeScript ORM. (Предложено Джуниором Клаусом Момбо-Нзаху и Селсо Миранда)
- RDB: ORM для Node.js. Поддерживает Postgres, MySQL и SQLite. (Предложено Ларсом-Эриком Роальдом)
Заключение
Это всего лишь набор очень полезных библиотек среди многих других. Если вы заинтересованы в использовании ORM в своих проектах, для вас будет большим преимуществом знать хотя бы несколько важных библиотек, подобных этим.