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
130
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
47
Что нам новый .NET несет?
vitallium
0
92
ORMs: You're doing it wrong (continued)
vitallium
0
72
ASP.NET MVC 5
vitallium
0
280
Other Decks in Programming
See All in Programming
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
530
Deep Dive into ~/.claude/projects
hiragram
14
2.6k
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
600
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
1
270
NPOでのDevinの活用
codeforeveryone
0
840
技術同人誌をMCP Serverにしてみた
74th
1
650
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
2
13k
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
130
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
120
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
160
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
650
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
690
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Facilitating Awesome Meetings
lara
54
6.4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
KATA
mclloyd
30
14k
Adopting Sorbet at Scale
ufuk
77
9.5k
A Modern Web Designer's Workflow
chriscoyier
695
190k
The Invisible Side of Design
smashingmag
301
51k
Code Review Best Practice
trishagee
69
19k
The Language of Interfaces
destraynor
158
25k
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 – не зло •Разработчики
– идиоты иногда просто не знают, как лучше
Спасибо!