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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
SourceGeneratorのススメ
htkym
0
190
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.2k
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
3.9k
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
960
Architectural Extensions
denyspoltorak
0
280
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
170
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
160
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
CSC307 Lecture 05
javiergs
PRO
0
500
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
210
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Raft: Consensus for Rubyists
vanstee
141
7.3k
Test your architecture with Archunit
thirion
1
2.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.9k
Exploring anti-patterns in Rails
aemeredith
2
250
ラッコキーワード サービス紹介資料
rakko
1
2.3M
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Designing Powerful Visuals for Engaging Learning
tmiket
0
230
It's Worth the Effort
3n
188
29k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
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 – не зло •Разработчики
– идиоты иногда просто не знают, как лучше
Спасибо!