powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Базовый класс для бизнес-сущностей
25 сообщений из 84, страница 3 из 4
Базовый класс для бизнес-сущностей
    #39704914
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaА теперь напиши всё тоже самое "без ООП". :-)Что это за адовая дичь ?

Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д.
Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика.
И это будет компактный читабельный код, который понимают миллионы разработчиков.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704963
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoDimonkaА теперь напиши всё тоже самое "без ООП". :-)Что это за адовая дичь ?

Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д.
Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика.
И это будет компактный читабельный код, который понимают миллионы разработчиков.
Видел я и такой ад конечно, когда половина логики была размазана по тысяче серверных процедур. Оно может и выполняется немного быстрее, но это реальный ад разбираться, отлаживать, а самое главное изменять под новые требования.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39704999
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimonka...
Используя ORM и ООП ты пишешь примерно следующий код:
Код: pascal
1.
2.
3.
4.
5.
Client := Manager.Find<TClient>(ClientID);
Order := Client.Orders[0];
for Item in Order.Items do
  if not Item.WarehouseItem.IsAvailable then
    raise EOrderError bla bla


А теперь напиши всё тоже самое "без ООП". :-)
Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом...
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705021
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DimonkaL_argoпропущено...
Что это за адовая дичь ?

Я запросто напишу на SQL в 100 раз сложнее задачу. С подзапросами, функциями со сложными расчетами, курсорами и т.д.
Оно предельно быстро выполнится на нативном языке СУБД. Не создавая ни байта лишнего сетевого трафика.
И это будет компактный читабельный код, который понимают миллионы разработчиков.
Видел я и такой ад конечно, когда половина логики была размазана по тысяче серверных процедур. Оно может и выполняется немного быстрее, но это реальный ад разбираться, отлаживать, а самое главное изменять под новые требования.
То же самое можно сказать не только про SQL.
Всё зависит от разработчика.

Мне вот, лично мне, не нравится бизнес-логика в триггерах.
Код в этом случае реально размазывается
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705063
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без хранимок любой sql сервер превращается лишь хранилище dbf для 1C :)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705074
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__, а причем здесь знания SQL?

Концепция предполагает, что я использую
1. Data Transfer Object
2. business object
3. data access object

И поддерживать эту модель будет легче на самом деле.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705076
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди, но ведь никто не отвергает их применение, хранимки нужны!
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705088
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetчччД__, а причем здесь знания SQL?

Концепция предполагает, что я использую
1. Data Transfer Object
2. business object
3. data access object

И поддерживать эту модель будет легче на самом деле.
"Легче, чем другую", конечно. На 200%. На самом деле.
Главное - велосипед свой запилить. И вовремя всплыть в разделе "работа".
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705111
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705114
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
schiwsnet,

Крайне рекомендую к прочтению

http://www.ooart.ru/uploads/book/arhitektura_korporativnyh_programmnyh_prilozhenij_fauler_m.pdf

Товарищ Фаулер Многие разработчики просто не владеют SQL и потому, пытаясь сформулировать эффективные запросы и команды, сталкиваются с проблемами. Помимо того, все без исключения технологии внедрения предложений SQL в код на языке программирования общего назначения страдают теми или иными изъянами. (Безусловно, было бы лучше осуществлять доступ к содержимому базы данных с помощью неких механизмов уровня языка разработки приложения.) А администраторы баз данных хотели бы уяснить нюансы обработки SQL-выражений, чтобы иметь возможность их оптимизировать.
По этим причинам разумнее обособить код SQL от бизнес - логики, разместив его в специальных классах.
Лютый п....ц, чтд.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705173
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__Dimonka...
Используя ORM и ООП ты пишешь примерно следующий код:
Код: pascal
1.
2.
3.
4.
5.
Client := Manager.Find<TClient>(ClientID);
Order := Client.Orders[0];
for Item in Order.Items do
  if not Item.WarehouseItem.IsAvailable then
    raise EOrderError bla bla


А теперь напиши всё тоже самое "без ООП". :-)
Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом...

По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига.

Зааттачил примерчик :-)
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705229
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
Сам никогда не использовал ORM и не планирую пока. Даже в небольших проектах мне проще написать несколько хранимок.
Утверждение о том, что серверную логику поддерживать сложнее - довольно спорное. Например, чтобы изменить логику сохранения данных в базу мне достаточно будет поменять хранимку, а не пересобирать приложение.
А про отчетность я вообще молчу. Если тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705231
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DimonkaчччД__пропущено...

Мы как-то занимались интеграцией с одной конторой, они именно так, в цикле-перебором данные доставали... ЭсКуЭль они знали, но очень слабо, про джойны (например) не знали уже ничего ("А зачем? Можно ведь цикл в цикле, не зная sql вообще")... да, калеки, конечно, но вот как-то живут они с этим, и даже считают это преимуществом...

По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига.

Зааттачил примерчик :-)



никто не говорил, что если использовать хранимки, то всё будет прямо летать.
Хранимки работают там, где лежат данные, и вот это их преимущество перед всеми вашими ОРМ
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705236
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AJiЕсли тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится.
Это не так. Во всех ОРМ адекватные запросы генерируются с коректными соединениями и условиями. В отличие от SQL ошибиться тяжело и покроет 90% задач с гаранией работоспособности. Кроме того во всех этих орм всегда есть возможность выполнить собственные запросы и получить результат в удобном видео.

Более того, благодаря кешированию данных орм иногда может работать даже быстрее обычных sql. Вот такой вот парадокс.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705240
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
JaDiБолее того, благодаря кешированию данных орм иногда может работать даже быстрее обычных sql. Вот такой вот парадокс.
а как ОРМ отслеживает, что данные в кеше устарели ?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705246
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

так же, как и любые другие технологии доступа -- никак. Программист сам решает, как должен работать кеш. Например, сбросив кеш перед важным запросом, чтобы гарантировать актуальность данных.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705266
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
JaDidefecator,

так же, как и любые другие технологии доступа -- никак. Программист сам решает, как должен работать кеш. Например, сбросив кеш перед важным запросом, чтобы гарантировать актуальность данных.
то есть кеш - фикция
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705270
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Нет, не фикция, довольно полезная штука (точнее, жизненно необходимая из-за работы с объектами по каждому чиху, когда пинг до сервера уже становится серьезной проблемой для производительности). Модификация данных -- жалкие проценты от операций чтения. Более того, бОльшая часть данных -- "статические", после создания не меняются очень долго (читай, никогда).
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705272
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
JaDiAJiЕсли тащить данные из таблиц, в которых хранятся миллионы записей, через ORM, который вообще ничего не знает про индексы, то это может очень плохо закончится.
Это не так. Во всех ОРМ адекватные запросы генерируются с коректными соединениями и условиями. В отличие от SQL ошибиться тяжело и покроет 90% задач с гаранией работоспособности. Кроме того во всех этих орм всегда есть возможность выполнить собственные запросы и получить результат в удобном видео.

Прям таки адекватные запросы? Насколько я знаю там нельзя указывать список полей, которые отбираются из таблицы. Он же всегда выполняет
Код: sql
1.
Select * from ...

Разве нет?
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705275
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AJi,

нет конечно... отбираются только те поля, которые требуются объекту... более того, если объект сложный и содержит вложенные сущности (например, ссылка на другой документ), то их можно как сразу загрузить, так и отложить на потом (когда к ним будет первый доступ в коде, то они автоматом подгрузятся).
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705277
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
JaDiAJi,

нет конечно... отбираются только те поля, которые требуются объекту... более того, если объект сложный и содержит вложенные сущности (например, ссылка на другой документ), то их можно как сразу загрузить, так и отложить на потом (когда к ним будет первый доступ в коде, то они автоматом подгрузятся).
А ну да, mORMot так умеет.
Может быть я старенький уже, но я привык запросы сам писать:)) Так хоть точно знаешь куда копать если тупить начинает. А все эти ORM черти как генерят запросы. Возможно, вы правы и они покрывают 90% задач, но мне все равно лень пересобирать приложение, когда поменялась логика сохранения или удаления записи и достаточно лишь процедуру на сервере поменять:)

И если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705278
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AJi,

Например, вспоминаю интересное решение в одном из таких фреймворков: генерится обычный запрос на селект из таблицы, а к нему добавляется джойн с подгрузкой данных внутреннего объекта, после чего результат разбирается и получается, что за раз сразу несколько объектов вытащилось из базы, и в дальнейшем они могут использоваться независимо.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705279
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AJiИ если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно.
Не только. Это может быть любой источник данных -- хоть вьюхи, хоть собственный запрос, а иногда и вовсе какая-то внешняя функция для каких-то спец полей. Вся фишка лишь в том, чтобы правильно связать поля класса с полями датасета/результата. Но да, не все фреймворки такое могут. Тут уже доки надо читать.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705282
AJi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJi
Гость
JaDiAJiИ если я все правильно понимаю, то ORM работает напрямую с таблицами. Лично я не люблю, когда у пользователей есть права на изменение данных в таблицах. Это не есть безопасно.
Не только. Это может быть любой источник данных -- хоть вьюхи, хоть собственный запрос, а иногда и вовсе какая-то внешняя функция для каких-то спец полей. Вся фишка лишь в том, чтобы правильно связать поля класса с полями датасета/результата. Но да, не все фреймворки такое могут. Тут уже доки надо читать.
При собственных запросах вообще теряется всякий интерес использовать ORM. Если бы можно было использовать процедуры сервера... Я поверхностно посмотрел несколько ORM, но там ничего подобного не увидел.
...
Рейтинг: 0 / 0
Базовый класс для бизнес-сущностей
    #39705313
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorDimonkaпропущено...


По такой логике, если делать "много чего" на хранимках, всё должно будет летать. Но вот как-то нет. Не летает нифига.

Зааттачил примерчик :-)



никто не говорил, что если использовать хранимки, то всё будет прямо летать.
Хранимки работают там, где лежат данные, и вот это их преимущество перед всеми вашими ОРМ
А что, только два варианта: ОРМ либо хранимки?
...
Рейтинг: 0 / 0
25 сообщений из 84, страница 3 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Базовый класс для бизнес-сущностей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]