|
|
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
DimonkaА теперь напиши всё тоже самое "без ООП". :-)Что это за адовая дичь ? Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д. Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика. И это будет компактный читабельный код, который понимают миллионы разработчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 13:30 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
L_argoDimonkaА теперь напиши всё тоже самое "без ООП". :-)Что это за адовая дичь ? Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д. Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика. И это будет компактный читабельный код, который понимают миллионы разработчиков. Видел я и такой ад конечно, когда половина логики была размазана по тысяче серверных процедур. Оно может и выполняется немного быстрее, но это реальный ад разбираться, отлаживать, а самое главное изменять под новые требования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 14:13 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
Dimonka... Используя ORM и ООП ты пишешь примерно следующий код: Код: pascal 1. 2. 3. 4. 5. А теперь напиши всё тоже самое "без ООП". :-) Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 14:42 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
DimonkaL_argoпропущено... Что это за адовая дичь ? Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д. Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика. И это будет компактный читабельный код, который понимают миллионы разработчиков. Видел я и такой ад конечно, когда половина логики была размазана по тысяче серверных процедур. Оно может и выполняется немного быстрее, но это реальный ад разбираться, отлаживать, а самое главное изменять под новые требования. То же самое можно сказать не только про SQL. Всё зависит от разработчика. Мне вот, лично мне, не нравится бизнес-логика в триггерах. Код в этом случае реально размазывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 14:56 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
без хранимок любой sql сервер превращается лишь хранилище dbf для 1C :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 15:37 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
чччД__, а причем здесь знания SQL? Концепция предполагает, что я использую 1. Data Transfer Object 2. business object 3. data access object И поддерживать эту модель будет легче на самом деле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 15:47 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
энди, но ведь никто не отвергает их применение, хранимки нужны! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 15:48 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnetчччД__, а причем здесь знания SQL? Концепция предполагает, что я использую 1. Data Transfer Object 2. business object 3. data access object И поддерживать эту модель будет легче на самом деле. "Легче, чем другую", конечно. На 200%. На самом деле. Главное - велосипед свой запилить. И вовремя всплыть в разделе "работа". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 15:57 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
wsnet, Крайне рекомендую к прочтению http://www.ooart.ru/uploads/book/arhitektura_korporativnyh_programmnyh_prilozhenij_fauler_m.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 16:26 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
schiwsnet, Крайне рекомендую к прочтению http://www.ooart.ru/uploads/book/arhitektura_korporativnyh_programmnyh_prilozhenij_fauler_m.pdf Товарищ Фаулер Многие разработчики просто не владеют SQL и потому, пытаясь сформулировать эффективные запросы и команды, сталкиваются с проблемами. Помимо того, все без исключения технологии внедрения предложений SQL в код на языке программирования общего назначения страдают теми или иными изъянами. (Безусловно, было бы лучше осуществлять доступ к содержимому базы данных с помощью неких механизмов уровня языка разработки приложения.) А администраторы баз данных хотели бы уяснить нюансы обработки SQL-выражений, чтобы иметь возможность их оптимизировать. По этим причинам разумнее обособить код SQL от бизнес - логики, разместив его в специальных классах. Лютый п....ц, чтд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 16:34 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
чччД__Dimonka... Используя ORM и ООП ты пишешь примерно следующий код: Код: pascal 1. 2. 3. 4. 5. А теперь напиши всё тоже самое "без ООП". :-) Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом... По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига. Зааттачил примерчик :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 17:56 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
Сам никогда не использовал ORM и не планирую пока. Даже в небольших проектах мне проще написать несколько хранимок. Утверждение о том, что серверную логику поддерживать сложнее - довольно спорное. Например, чтобы изменить логику сохранения данных в базу мне достаточно будет поменять хранимку, а не пересобирать приложение. А про отчетность я вообще молчу. Если тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 20:23 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
DimonkaчччД__пропущено... Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом... По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига. Зааттачил примерчик :-) никто не говорил, что если использовать хранимки, то всё будет прямо летать. Хранимки работают там, где лежат данные, и вот это их преимущество перед всеми вашими ОРМ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 20:26 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
AJiЕсли тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится. Это не так. Во всех ОРМ адекватные запросы генерируются с коректными соединениями и условиями. В отличие от SQL ошибиться тяжело и покроет 90% задач с гаранией работоспособности. Кроме того во всех этих орм всегда есть возможность выполнить собственные запросы и получить результат в удобном видео. Более того, благодаря кешированию данных орм иногда может работать даже быстрее обычных sql. Вот такой вот парадокс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 20:40 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
JaDiБолее того, благодаря кешированию данных орм иногда может работать даже быстрее обычных sql. Вот такой вот парадокс. а как ОРМ отслеживает, что данные в кеше устарели ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 20:49 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
defecator, так же, как и любые другие технологии доступа -- никак. Программист сам решает, как должен работать кеш. Например, сбросив кеш перед важным запросом, чтобы гарантировать актуальность данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 21:10 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
JaDidefecator, так же, как и любые другие технологии доступа -- никак. Программист сам решает, как должен работать кеш. Например, сбросив кеш перед важным запросом, чтобы гарантировать актуальность данных. то есть кеш - фикция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 21:50 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
defecator, Нет, не фикция, довольно полезная штука (точнее, жизненно необходимая из-за работы с объектами по каждому чиху, когда пинг до сервера уже становится серьезной проблемой для производительности). Модификация данных -- жалкие проценты от операций чтения. Более того, бОльшая часть данных -- "статические", после создания не меняются очень долго (читай, никогда). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 22:00 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
JaDiAJiЕсли тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится. Это не так. Во всех ОРМ адекватные запросы генерируются с коректными соединениями и условиями. В отличие от SQL ошибиться тяжело и покроет 90% задач с гаранией работоспособности. Кроме того во всех этих орм всегда есть возможность выполнить собственные запросы и получить результат в удобном видео. Прям таки адекватные запросы? Насколько я знаю там нельзя указывать список полей, которые отбираются из таблицы. Он же всегда выполняет Код: sql 1. Разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 22:03 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
AJi, нет конечно... отбираются только те поля, которые требуются объекту... более того, если объект сложный и содержит вложенные сущности (например, ссылка на другой документ), то их можно как сразу загрузить, так и отложить на потом (когда к ним будет первый доступ в коде, то они автоматом подгрузятся). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 22:15 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
JaDiAJi, нет конечно... отбираются только те поля, которые требуются объекту... более того, если объект сложный и содержит вложенные сущности (например, ссылка на другой документ), то их можно как сразу загрузить, так и отложить на потом (когда к ним будет первый доступ в коде, то они автоматом подгрузятся). А ну да, mORMot так умеет. Может быть я старенький уже, но я привык запросы сам писать:)) Так хоть точно знаешь куда копать если тупить начинает. А все эти ORM черти как генерят запросы. Возможно, вы правы и они покрывают 90% задач, но мне все равно лень пересобирать приложение, когда поменялась логика сохранения или удаления записи и достаточно лишь процедуру на сервере поменять:) И если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 22:30 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
AJi, Например, вспоминаю интересное решение в одном из таких фреймворков: генерится обычный запрос на селект из таблицы, а к нему добавляется джойн с подгрузкой данных внутреннего объекта, после чего результат разбирается и получается, что за раз сразу несколько объектов вытащилось из базы, и в дальнейшем они могут использоваться независимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 22:30 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
AJiИ если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно. Не только. Это может быть любой источник данных -- хоть вьюхи, хоть собственный запрос, а иногда и вовсе какая-то внешняя функция для каких-то спец полей. Вся фишка лишь в том, чтобы правильно связать поля класса с полями датасета/результата. Но да, не все фреймворки такое могут. Тут уже доки надо читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 22:35 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
JaDiAJiИ если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно. Не только. Это может быть любой источник данных -- хоть вьюхи, хоть собственный запрос, а иногда и вовсе какая-то внешняя функция для каких-то спец полей. Вся фишка лишь в том, чтобы правильно связать поля класса с полями датасета/результата. Но да, не все фреймворки такое могут. Тут уже доки надо читать. При собственных запросах вообще теряется всякий интерес использовать ORM. Если бы можно было использовать процедуры сервера... Я поверхностно посмотрел несколько ORM, но там ничего подобного не увидел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2018, 22:47 |
|
||
|
Базовый класс для бизнес-сущностей
|
|||
|---|---|---|---|
|
#18+
defecatorDimonkaпропущено... По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига. Зааттачил примерчик :-) никто не говорил, что если использовать хранимки, то всё будет прямо летать. Хранимки работают там, где лежат данные, и вот это их преимущество перед всеми вашими ОРМ А что, только два варианта: ОРМ либо хранимки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 00:50 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39705277&tid=2040386]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 330ms |

| 0 / 0 |
