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
Без ОРМ
Search
Deep Refactoring
October 26, 2017
Education
450
0
Share
Без ОРМ
https://youtu.be/mb6-NHMzSkY
Deep Refactoring
October 26, 2017
More Decks by Deep Refactoring
See All by Deep Refactoring
Поворот на 90°
deeprefactoring
0
140
Card Payments 101
deeprefactoring
0
130
Звонки на стероидах
deeprefactoring
0
120
Make Time
deeprefactoring
0
91
Learn-to-Rank или как научить бездушную машину хорошо искать
deeprefactoring
0
180
Уменьшаем количество рефлексии в коде
deeprefactoring
1
98
Прикладная кодогенерация для Java разработчика
deeprefactoring
0
440
Пишем игровой навык для Алисы Яндекс с помощью Excel
deeprefactoring
0
190
Подружиться с исключениями. Иван Гришаев, Exoscale
deeprefactoring
0
200
Other Decks in Education
See All in Education
SSH_handshake_easy_explain
kenbo
0
970
理工学系 第1回大学院説明会2026|東京科学大学(Science Tokyo)
sciencetokyo
PRO
1
1.4k
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
3.5k
Fulbright DAI 2025 學人經驗分享
joannie
0
740
LinkedIn
matleenalaakso
0
4.1k
GitHubによるWebアプリケーションのデプロイ / 07-github-deploy
kaityo256
PRO
1
240
AI進化史:LLMからAIエージェントへ
mickey_kubo
0
130
Data Physicalisation - Lecture 9 - Next Generation User Interfaces (4018166FNR)
signer
PRO
1
880
Investigating Changes in Self-Assessed Spoken English Proficiency in a Three-Week Study-Abroad Program
uranoken
0
120
Sponsorship 2026 | VizChitra
vizchitra
2
230
バージョン管理とは / 01-a-vcs
kaityo256
PRO
1
310
2026年度春学期 統計学 第2回 統計資料の収集と読み方 (2026. 4. 16)
akiraasano
PRO
0
130
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
490
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Design in an AI World
tapps
0
190
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
A Soul's Torment
seathinner
6
2.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Six Lessons from altMBA
skipperchong
29
4.2k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
69
38k
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Transcript
Без ORM Иван Гришаев, 2017
Википедия is a technique for converting data between incompatible type
systems using object-oriented programming languages.
ORM, например
Что дает — абстракция над БД — упрощает процесс разработки
— объектность™
В реальности — абстракции (чаще всего) зло — база меняется
редко (и болезненно) — коллекции > объекты
SQL — создан до ООП — декларативный — не-Тьюринг полный
— решает задачи
Задача о переводе SQL в объекты... — неразрешима в принципе!
— сравнима с трансляцией языков
Примерная сложность SEL/INS/UPD/DEL + (на этом пора заканчивать) INNER/LEFT JOIN
++ WITH RECURSIVE ++++ JSON(b) ++++++++ GIS ++++++++++++++ FULLTEXT SEARCH ++++++++++++++++++++++++++++ ...
Проблемы — ORM системы сложны — внутренние API не документированы
— не спасают от raw SQL
Боязнь raw SQL — доменный язык (как HTML, CSS) —
ООП-код растет — неэффективная работа с БД
None
None
Эти ваши объекты
К чему приводит ORM — Боязнь (незнание) SQL — Хрупкость
базы — Лишний ОО-код — ORM-specific bugs
К чему приводит ORM — Зависимость — Нечитаемые запросы —
Трудно понять, что на выходе
None
None
None
None
А если будет тормозить? — Сперва добейся! — Конфигурация —
Железо — Меньше кода
Вам не нужны объекты — опасные property — нужны удобные
структуры — и функции для работы с ними — Clojure, Go, Rust
Что предлагаешь? — Построители запросов — Запросы из структур данных
— SQL-шаблоны — Генерация функций
Построители запросов
Запросы из структур данных
SQL templates
Наш проект — PostgreSQL, JDBC/Clojure — 70 таблиц — до
15 join-ов в запросах — GIS, JSONb — рекурсивные запросы
None
SQL templates
HugSQL, YeSQL — Один *.sql файл — Clojure, JS, Python,
PHP, Perl, Go, C#, Erlang, Ruby
Конец — Вопросы?