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, которые они используют. Итак, я подумал об упоминании этих библиотек в статье, чтобы убедиться, что никто не пропустит их.

Заключение

Это всего лишь набор очень полезных библиотек среди многих других. Если вы заинтересованы в использовании ORM в своих проектах, для вас будет большим преимуществом знать хотя бы несколько важных библиотек, подобных этим.



Учить больше