Size: a a a

pgsql – PostgreSQL

2021 January 19

C

Centnot in pgsql – PostgreSQL
Dmitriy
Вот то, что я писал: https://t.me/pgsql/276634
Вот пример из kata: db.Query("Books").Where("Id", 145).Where("Lang", "en").First();
Ни в коем случае) я писал про ORM  на примере Entity Framework, когда есть сложное многоуровневое наследование с кучей классов и с хранением в виде TPT, TPH - тогда ORM начинает сходить с ума и создавать монстров.
Kata немножко не об этом, она не совсем про ORM.
источник

D

Dmitriy in pgsql – PostgreSQL
Centnot
Ни в коем случае) я писал про ORM  на примере Entity Framework, когда есть сложное многоуровневое наследование с кучей классов и с хранением в виде TPT, TPH - тогда ORM начинает сходить с ума и создавать монстров.
Kata немножко не об этом, она не совсем про ORM.
Так а как то, что я написал, связано с ОРМ? Тот же квери-билдер написал, вообще разницы не вижу.
источник

D

Dmitriy in pgsql – PostgreSQL
Я про модели, маппинг и прочее не писал
источник

C

Centnot in pgsql – PostgreSQL
Dmitriy
Я про модели, маппинг и прочее не писал
Тогда пардон, проф деформация , вижу ORM, пишу про ORM)
источник

D

Dmitriy in pgsql – PostgreSQL
Centnot
Тогда пардон, проф деформация , вижу ORM, пишу про ORM)
Разговор с того и начался, что написали "пора съезжать с ОРМ, пока не поздно", а я ответил, что "можно из ОРМ юзать только квери-билдер". И меня стали клевать))))
источник

C

Centnot in pgsql – PostgreSQL
Dmitriy
Я хочу увидеть, как в коде можно читабельно построить SQL-запрос с условиями
Понял вопрос, а в чем проблема с if(){}else{} ?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
в догонку напишу, что при проектировании 6NF специально создаётся каталог, в котором описано каким образом для 6NF-схемы генерировать запросы в 5NF (ибо приложению в 6NF не удобно). и генерация запросов по каталогу – это примерно то, что вы обсуждали. кому-то удобно в базе процедурами, кому-то из приложения / кому-то важна логика, а кто-то просто поля из словаря маппит. так, к слову…
источник

am

a m in pgsql – PostgreSQL
Centnot
Понял вопрос, а в чем проблема с if(){}else{} ?
Писать много, пальцы устают.
источник

D

Dmitriy in pgsql – PostgreSQL
Centnot
Понял вопрос, а в чем проблема с if(){}else{} ?
Дело не конкретно даже в этих условиях, а в том, что очень часто разработчики внутри условий строку с запросом по кусочкам собирают. Звучит безобидно, пока таких условий не становится много. В итоге путаница со скобками, параметрами, а в некоторых случаях и запрос получается невалидным. Далее разработчик видя, что получается какаха, реализует шаблон проектирования "строитель" (если он знает шаблоны проектирования, конечно, и ему не плевать на качество кода).

Потом он думает "хм, а мне бы с объектами было удобней работать, чем с массивами" - и прикручивает туда самописный маппер результатов запроса на объекты. В итоге человек пилит свою ORM (простейшую, т.к. сделал квери-билдер + маппер), даже не зная об этом, и продолжает бить себя кулаком в грудь, крича, что он ненавидит ORM, и что они не нужны. Это я не прикалываюсь, если что. Реально неоднократно таких разработчиков встречал.
источник

C

Centnot in pgsql – PostgreSQL
Dmitriy
Дело не конкретно даже в этих условиях, а в том, что очень часто разработчики внутри условий строку с запросом по кусочкам собирают. Звучит безобидно, пока таких условий не становится много. В итоге путаница со скобками, параметрами, а в некоторых случаях и запрос получается невалидным. Далее разработчик видя, что получается какаха, реализует шаблон проектирования "строитель" (если он знает шаблоны проектирования, конечно, и ему не плевать на качество кода).

Потом он думает "хм, а мне бы с объектами было удобней работать, чем с массивами" - и прикручивает туда самописный маппер результатов запроса на объекты. В итоге человек пилит свою ORM (простейшую, т.к. сделал квери-билдер + маппер), даже не зная об этом, и продолжает бить себя кулаком в грудь, крича, что он ненавидит ORM, и что они не нужны. Это я не прикалываюсь, если что. Реально неоднократно таких разработчиков встречал.
А ну это уже проблема стандартов внутри самой команды и наличия CodeReview, где более мудрые товарищи бамбуковыми палками по пальцам за такое бьют
источник

am

a m in pgsql – PostgreSQL
Dmitriy
Дело не конкретно даже в этих условиях, а в том, что очень часто разработчики внутри условий строку с запросом по кусочкам собирают. Звучит безобидно, пока таких условий не становится много. В итоге путаница со скобками, параметрами, а в некоторых случаях и запрос получается невалидным. Далее разработчик видя, что получается какаха, реализует шаблон проектирования "строитель" (если он знает шаблоны проектирования, конечно, и ему не плевать на качество кода).

Потом он думает "хм, а мне бы с объектами было удобней работать, чем с массивами" - и прикручивает туда самописный маппер результатов запроса на объекты. В итоге человек пилит свою ORM (простейшую, т.к. сделал квери-билдер + маппер), даже не зная об этом, и продолжает бить себя кулаком в грудь, крича, что он ненавидит ORM, и что они не нужны. Это я не прикалываюсь, если что. Реально неоднократно таких разработчиков встречал.
У изобретения своей недоORM есть большой плюс: нет риска того, что завтра понадобится сделать простенький подзапрос, который в настоящую ORM ни фига не влезает без двух суток ковыряния исходников.
источник

C

Centnot in pgsql – PostgreSQL
a m
У изобретения своей недоORM есть большой плюс: нет риска того, что завтра понадобится сделать простенький подзапрос, который в настоящую ORM ни фига не влезает без двух суток ковыряния исходников.
Человек и пишет изначально что вместо ORM, можно использовать квери-билдер. я тоже сначала мимо прочитал))
источник

D

Dmitriy in pgsql – PostgreSQL
a m
У изобретения своей недоORM есть большой плюс: нет риска того, что завтра понадобится сделать простенький подзапрос, который в настоящую ORM ни фига не влезает без двух суток ковыряния исходников.
В самописную он точно так же не влезает. Ещё и документации нет, тестов, а ещё sql-инъекции
источник

am

a m in pgsql – PostgreSQL
Centnot
Человек и пишет изначально что вместо ORM, можно использовать квери-билдер. я тоже сначала мимо прочитал))
Я не могу ни писать на квери-билдерах что-то сложнее элементарной выборки, ни читать уже написанное. Очевидно, плохой с меня программист.
источник

D

Dmitriy in pgsql – PostgreSQL
Centnot
А ну это уже проблема стандартов внутри самой команды и наличия CodeReview, где более мудрые товарищи бамбуковыми палками по пальцам за такое бьют
Один из тех разрабов был руководителем разработки (и по возрасту почти в 2 раза меня старше был на тот момент). И хрен что ему докажешь. Я посмотрел на это всё - и свалил через пару месяцев.
источник

D

Dmitriy in pgsql – PostgreSQL
a m
Я не могу ни писать на квери-билдерах что-то сложнее элементарной выборки, ни читать уже написанное. Очевидно, плохой с меня программист.
Ну все библиотеки квери-билдеров, которые я встречал, имеют те или иные ограничения. Какие-то более гибкие, какие-то менее. В любом случае где-то прибегать приходится к чистому SQL, но всё равно это сильно далеко от его повсеместного использования в проекте.
источник

am

a m in pgsql – PostgreSQL
У меня в коде всегда мешанина из чистого ORM’а для элементарных запросов, чистого SQL для творчества и ручных prepared statements для СКОРАСТИ. Жив, здоров.
источник

C

Centnot in pgsql – PostgreSQL
a m
Я не могу ни писать на квери-билдерах что-то сложнее элементарной выборки, ни читать уже написанное. Очевидно, плохой с меня программист.
Краткое резюме?) квери-билдеры для чего-то простого и средней сложности, а сложное уже на языке самой СУБД.
источник

am

a m in pgsql – PostgreSQL
Centnot
Краткое резюме?) квери-билдеры для чего-то простого и средней сложности, а сложное уже на языке самой СУБД.
Я к тому, что «код на квери-билдерах» невозможно ни читать, ни писать.
источник

D

Dmitriy in pgsql – PostgreSQL
a m
У меня в коде всегда мешанина из чистого ORM’а для элементарных запросов, чистого SQL для творчества и ручных prepared statements для СКОРАСТИ. Жив, здоров.
А мне чистый ORM-подход не нравится, т.к. всякие findBy с lazy-лоадингами - ну его нафиг. Квери-билдер надёжней в этом смысле
источник