Що таке ORM і навіщо він потрібен?

Обкладинка допису: Що таке ORM і навіщо він потрібен?
Коли ми працюємо з базами даних, зазвичай доводиться писати SQL-запити - вибірки, вставки, оновлення даних тощо. Але коли проєкт зростає, цих запитів стає сотні, і підтримувати їх стає важко.
Саме тут у гру вступає ORM (Object-Relational Mapping) - технологія, яка дозволяє працювати з базою даних через об’єкти мови програмування.
ORM “перекладає” дані з таблиць у базі даних у вигляді об’єктів, з якими можна працювати у коді.
Наприклад, замість того щоб писати:
SELECT * FROM users WHERE id = 1;
у Ruby on Rails ми просто робимо:
user = User.find(1)
і отримуємо об’єкт User, який має методи, властивості та поведінку, як звичайний Ruby-клас.
Переваги ORM
  • Мінімум SQL - більшість запитів генерується автоматично.
  • Менше помилок - ORM перевіряє типи, зв’язки, валідації.
  • Швидша розробка - CRUD-операції (create, read, update, delete) пишуться у кілька рядків.
  • Портативність - легко змінити СУБД (наприклад, з PostgreSQL на MySQL) без переписування запитів.
  • Зручна робота зі зв’язками - has_many, belongs_to, has_one тощо.
Недоліки ORM
  • Продуктивність - іноді ORM генерує “важкі” запити, які треба оптимізувати вручну.
  • Чорна скринька - складно зрозуміти, що відбувається під капотом.
  • Не для всього - складні SQL-запити або аналітичні вибірки краще писати вручну.
Приклади ORM
  • Ruby - ActiveRecord
  • Python - SQLAlchemy, Django ORM
  • JavaScript - Sequelize, Prisma
  • PHP - Eloquent (Laravel)
Якщо коротко. ORM - це міст між світом об’єктів і таблиць. Він дозволяє розробникам менше думати про SQL і більше - про логіку бізнесу. Але як і будь-який інструмент, ORM варто розуміти, щоб не перетворити зручність на пастку продуктивності.

Цей допис поки що не має жодних доповнень від автора/ки.

Що таке NP-складність?
16 вер., 19:31

Що таке NP-складність?

meme code
meme code@memecode
Offset vs Cursor Pagination у Rails: що вибрати та чому
24 вер., 15:22

Offset vs Cursor Pagination у Rails: що вибрати та чому

meme code
meme code@memecode
Що таке Row Security в PostgreSQL і навіщо це Rails-розробникам
04 жовт., 19:06

Що таке Row Security в PostgreSQL і навіщо це Rails-розробникам

meme code
meme code@memecode
Що таке ivar у Ruby / Rails?
19 жовт., 20:12

Що таке ivar у Ruby / Rails?

meme code
meme code@memecode
Основні способи аутентифікації в API
19 жовт., 20:26

Основні способи аутентифікації в API

meme code
meme code@memecode
Чим відрізняються OAuth 1 від OAuth 2
19 жовт., 20:34

Чим відрізняються OAuth 1 від OAuth 2

meme code
meme code@memecode