Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ORMs: You’re Doing it wrong
Search
Vitaly Slobodin
March 06, 2015
Programming
0
140
ORMs: You’re Doing it wrong
Vitaly Slobodin
March 06, 2015
Tweet
Share
More Decks by Vitaly Slobodin
See All by Vitaly Slobodin
Затащи меня в ад
vitallium
0
50
Что нам новый .NET несет?
vitallium
0
94
ORMs: You're doing it wrong (continued)
vitallium
0
73
ASP.NET MVC 5
vitallium
0
290
Other Decks in Programming
See All in Programming
[SF Ruby Feb'26] The Silicon Heel
palkan
0
120
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
120
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
130
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
170
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
8.2k
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
350
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
200
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
570
AHC061解説
shun_pi
0
410
Claude Codeセッション現状確認 2026福岡 / fukuoka-aicoding-00-beacon
monochromegane
4
450
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
530
Claude Code Skill入門
mayahoney
0
410
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
220
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Why Our Code Smells
bkeepers
PRO
340
58k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
410
Automating Front-end Workflow
addyosmani
1370
200k
Are puppies a ranking factor?
jonoalderson
1
3.1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
250
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.5k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Transcript
ORMs: You’re Doing it wrong Виталий Слободин @vitalliumm http://github.com/vitallium Based
on presentation “ORMs: You’re Doing it wrong” by Jimmy Bogard
Что такое ORM? “ORM (object-relational mapping, объектно-реляционное отображение) — технология
программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования”
Приложение База данных
Шаблоны проектирования: Active Record Для данной таблицы создаётся специальный класс
Active Record, являющийся отражением (представлением) таблицы. Каждый экземпляр данного класса соответствует одной записи таблицы.
Шаблоны проектирования: Data Mapper Data Mapper — это программная прослойка,
разделяющая объект и БД. Его обязанность — пересылать данные между ними и изолировать их друг от друга
Поведенческие шаблоны (проектирования) Unit Of Work Identity Map
ORM это не
ЗЛО
Магия
Проблемы связывания и проекций
Плохо: генерация из базы данных
Хорошо: Подход Code First
Плохо: лишние свойства навигации
Хорошо: YAGNI ассоциации
Плохо: повторение проекций
Хорошо: соглашение о проекциях (mapping conventions)
Плохо: проекция отношения многие-ко- многим
Хорошо: создание проекции таблицы многие-ко-многим
Плохо: навязывание (недостаточность) примитивных типов
Хорошо: пользовательские типы
Хорошо: пользовательские типы
Проблемы с запросами
Плохо: Излишняя отложенная загрузка / SELECT N+1
Плохо: Излишняя отложенная загрузка / SELECT N+1
Хорошо: моментальная загрузка
Плохо: декартовы произведения
Хорошо: множественные запросы
Плохо: Я джедай LINQ!
Хорошо: используйте темную сторону силы - SQL
Плохо: лишние данные
Хорошо: проекции (DTO)
Хорошо: проекции (DTO)
Итоги •ORMs – не зло •SQL – не зло •Разработчики
– идиоты иногда просто не знают, как лучше
Спасибо!