Маттео Коллина тут завлёк многих докладом I would never use an ORM. Смотришь на тайминг и думаешь «ох, нифига себе, 40 минут уничтожения ORM, надо больше попкорна». Но это, к сожалению, не совсем так. На самом деле, ругает ORM Маттео только в первой части, во второй он рекламирует свой новый инструмент/платформу Platformatic. Погнали по тейкам:
ORM очень много обещают. Мол, используйте меня и будет у тебя красота и простота в коде.
Модели много на себя берут. Управляют хранилищем и связями, хранят данные в памяти, содержат бизнес-логику. Но мы уже переросли концепцию MVC и структурируем приложения по фичам, нам не нужны жирные модели.
Мы должны решить, что для нас ценнее: возможность делать быстро повторяющиеся простые вещи, либо нам важнее максимальная гибкость для решения сложных задач.
ORM упрощают самую простую часть (описание схемы, миграции, простейшие запросы), но никак не помогают нам в решении сложных задач, которые нас настигнут позже. В конце концов, мы приходим к ручному написанию SQL и борьбе с типами.
Если мы общаемся с БД посредством ORM мы работает на минимальном уровне возможностей. Вместо всей мощи SQL мы используем какой-то упрощённый неявный срез фич. Например, PostgreSQL умеет работать с JSON-полями, но мы ждали годы, пока ORM дадут нам возможность строить по ним запросы.
Раз нам не нравятся повторяющиеся простые задачи и мы не хотим использовать ORM, то давайте просто сделаем платформу, где будет всё из коробки и нормально (тут он как раз презентует Platformatic).
Platformatic — это приложение поверх Fastify, построенное на плагинах. Все плагины доступны отдельно и их можно подключить в любое Fastify-приложение. Platformatic берёт на себя работу с БД, фактически это готовый бэкенд, который может отдавать REST и GraphQL и работать с любой популярной базой данных. Просто пишем миграции и иногда расширяем поведение плагинами, если чего-то не хватает.
Ну и в конце он задаётся вопросом — не написал ли он очередную ORM создав Platformatic? Решайте сами.
---
От себя добавлю, что независимо от того нравятся вам ORM или нет, я порекомендую к изучению код Platformatic. Маттео фигни не напишет.
ORM очень много обещают. Мол, используйте меня и будет у тебя красота и простота в коде.
Модели много на себя берут. Управляют хранилищем и связями, хранят данные в памяти, содержат бизнес-логику. Но мы уже переросли концепцию MVC и структурируем приложения по фичам, нам не нужны жирные модели.
Мы должны решить, что для нас ценнее: возможность делать быстро повторяющиеся простые вещи, либо нам важнее максимальная гибкость для решения сложных задач.
ORM упрощают самую простую часть (описание схемы, миграции, простейшие запросы), но никак не помогают нам в решении сложных задач, которые нас настигнут позже. В конце концов, мы приходим к ручному написанию SQL и борьбе с типами.
Если мы общаемся с БД посредством ORM мы работает на минимальном уровне возможностей. Вместо всей мощи SQL мы используем какой-то упрощённый неявный срез фич. Например, PostgreSQL умеет работать с JSON-полями, но мы ждали годы, пока ORM дадут нам возможность строить по ним запросы.
Раз нам не нравятся повторяющиеся простые задачи и мы не хотим использовать ORM, то давайте просто сделаем платформу, где будет всё из коробки и нормально (тут он как раз презентует Platformatic).
Platformatic — это приложение поверх Fastify, построенное на плагинах. Все плагины доступны отдельно и их можно подключить в любое Fastify-приложение. Platformatic берёт на себя работу с БД, фактически это готовый бэкенд, который может отдавать REST и GraphQL и работать с любой популярной базой данных. Просто пишем миграции и иногда расширяем поведение плагинами, если чего-то не хватает.
Ну и в конце он задаётся вопросом — не написал ли он очередную ORM создав Platformatic? Решайте сами.
---
От себя добавлю, что независимо от того нравятся вам ORM или нет, я порекомендую к изучению код Platformatic. Маттео фигни не напишет.