Ответы Mail.ru: Зачем использовать ORM кода запрос SQL написать гораздо проще и быстрее и работать он будет тоже гораздо быстрее ORM?

Андрей (431295) 2 месяца назад

В языке программирования ты работаешь не с плоскими таблицами, а со сложными структурами данных. И ORM - механизм автоматической трансляции данных между представлением, удобным для программы, и представлением, удобным для СУБД. Ты обращаешься к позициям заказа как к массиву и не задумываешься, что и как при этом будет загружено, вносишь изменения в заказ и не задумываешься, какие записи каких таблиц будут при этом изменены.

В ORM класса DataMapper структура данных, с которой работает твой код, полностью отвязана от структуры хранения данных в БД. Это медленнее, но твой код становится чище.

И даже в ORM класса ActiveRecord, которая привязана к структуре таблиц, ты получаешь автоматическую работу со связями, не задумываясь о том, что и где у тебя уже загружено, что и как изменилось.

P.S. Помимо ORM и прямых написаний SQL-запросов есть ещё один вариант: Query Builder, предназначенный для автоматического и максимально быстрого построения SQL-запросов. В нём нет ни тормозов, вызванных ORM'ными преобразованиями данных и ленивыми запросами, ни необходимости учёта особенностей конкретной СУБД.

ПапаВысший разум

2 месяца назад

А мне, честно говоря, нравится ход мыслей автора в данном вопросе.
Походил по собеседованиям - любой проект, если ему нужна производительность, пишет ORM сам. Я думал, хибернейт только в 00-х годах был грудой тормозного говнокода, ан нет, он до сих пор такой. Просто в CRUD приложениях с нагрузкой 1000 транзакций в день это неважно.

V̲i̲s̲t̲a̲s̲t̲e̲r̲ (245960) 2 месяца назад

Написать проще абстракцию, чем при каждом изменении структур править запросы. Абстракции могут добавить безопасности, лучшей переносимости, гибкости, тестируемости на имитационных объектах и наборах (Mocks, Fixtures). Но есть и минусы, как обычно.

Сергей Никульшин (5844) 2 месяца назад

Если не лень писать всю логику и проверки, то можно и самому писать.
На первых порах даже проще использовать ORM. Как и все библиотеки и фреймворки - нравиться и понимаешь - используешь, нет - не используешь и городишь свой огород.
Тебе дают в руки швейцарский нож, а ты либо его используешь, либо нет... ну или берёшь не Швейцарский а Турецкий. Естественно, тебе никто не запрещает сделать свой и только под свои нужды. Я вижу пару проблем. 1) в твоём огороде будет сложнее разбираться другим людям, ведь ты не будет документировать свой код так, как это делают для ORM. 2) именно тебе надо следить за "актуальностью" и совместимостью твоего кода. То есть проект будет под тебя.
Я пользовался Redbean но вот под некоторую задачу горожу огород для себя. Так что если знаешь что пишешь и не боишься запутаться или запутать тех кто совместно с тобой или после тебя будет работать - дерзаешь. Не зря же каждый год появляются разные JS библиотеки, ORM и конечно фреймворки... Под себя и под собственные нужды - если времени не жалко и хочешь сделать свой велосипед.