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
ロボットのための工場に灯りは要らない
watany
11
3k
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
200
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1k
The free-lunch guide to idea circularity
hollycummins
0
290
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
2.5k
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
410
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
8.2k
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.1k
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
310
安いハードウェアでVulkan
fadis
0
650
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.3k
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
500
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
0
290
Rails Girls Zürich Keynote
gr2m
96
14k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
300
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Become a Pro
speakerdeck
PRO
31
5.9k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
110
Designing for Timeless Needs
cassininazir
0
170
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
130
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 – не зло •Разработчики
– идиоты иногда просто не знают, как лучше
Спасибо!