|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Недавно стал задумываться над вопросом. Сейчас нахожусь на дописывании - саппорте двух КИС. Логика одной говорит. Все просто: Создавай таблицы пиши логику на стороне сервака. и ваяй вот так-то так-то ГУИ все просто. Вторая. Есть БД. Есть к ней стандартные классы. г(Backoutdoc, Regdoc, ItemoutDoc - и т.д) Вот эти классы сами генерят sql. И на сохранение, и на удаление и на селекты. Но делают они это криво, и не всегда спасает. Приходиться ваять иногда самому. Ну конструктор гуи там тоже. Внимание Вопрос. Хочется узнать как живут другие: В ваших КИС - как прописывают запросы? как они хранятся?. Хранятся ли они жестко в коде?. или подгружаются Более интересно конечно если они генерятся рантайм. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 14:29 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Вариант1, т.к варинт2 совсем непонятен. авторВот эти классы сами генерят sql искусственный интелект что-ль? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 14:51 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Петро123 искусственный интелект что-ль? Точно.. Например есть DOC (id uniqueidentifier, from uniqueidentifier, to uniqueidentifier, rem Varchar(20)) Под него заточен класс: class Doc: public SqlObject public: pid: GUID; Contragent* from; // в базе это внешние ключи, в коде ассоциации Contragent* to; rem: std::string end; Обращение в коде: Doc doc; Doc.to = to1; Doc.from=from; Doc.save() в базу идет sql - insert doc (id, from, to) values (newID(), ... , ..); типо того ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:01 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
охренеть. И всё это ручками самописка? - есть куча прокладок-систем между объектами на клиенте и плоской СУБД. Вплоть до ООБД. Чтобы самому неписать. 2. Геморрой всё это. Грамотный программист БД + грамотный архитектор клиентской части сделают по варианту1 лучше, проще и дешевле. Рантайм запросы - это пока фантастика. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:26 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Petro123 Рантайм запросы - это пока фантастика. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! не совсем так, например: "Открыть шторы!" "Включить свет" можно научить с грехом пополам. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:28 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
автор есть куча прокладок-систем Какие прокладки-системы вы знаете, киньте ссылки. А система 2ая нормально работает, правда время вхождения программиста большое. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:31 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
автор Рантайм запросы - это пока фантастика. Почему это фантастика.. Еще древний 1С так делал. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:34 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
_xrusКакие прокладки-системы вы знаете, киньте ссылки. Такое слово как ORM , неужели не слышали? Например для Java: TopLink, Hibernate, Kodo и т. д. Аналогичная хрень есть и для других ЯП. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:39 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Насчет генерации SQL "на лету"... Например, в Oracle есть такое понятие, как Dynamic SQL, который предназначен именно для этого (хотя это не классы, это программист прописывает, просто там есть некоторые переменные части). Однако, этим пользоваться надо умеренно, ибо снижает производительность работы. В Oracle разобранный запрос с планом выполнения хранится в кэше с той идеей, что одинаковые запросы повторяются в рамках приложения. Если они действительно повторяются, то за счет кэша выполняемая сервером работа уменьшается. Если мы применяем динамический SQL, мы фактически заставляем сервер каждый раз выполнять разбор SQL и строить ему план выполнения, т.е. не используем эту возможность (кэширование запросов). Полагаю, что похожие средства есть и в других БД ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:44 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
авторА система 2ая нормально работает, правда время вхождения программиста большое. - и чем бОльший год на дворе, тем бОльше вхождение (и зарплата). tru55 это просто склейка текста запроса. Я имел ввиду уровень выше. Типа поигрался классами на клиенте, кости бросил.... и вот вам - эффективный запрос с другими JOINами ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:55 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Kachalov _xrusКакие прокладки-системы вы знаете, киньте ссылки. Такое слово как ORM , неужели не слышали? Например для Java: TopLink, Hibernate, Kodo и т. д. Аналогичная хрень есть и для других ЯП. +1 в Delphi Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 15:58 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Petro123 .SaveToBlob; Какой еще сайв_то_блоб. Вы не понимаете наверно о чем мы говорим. Kachalov - спс интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 16:00 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Petro123 tru55 это просто склейка текста запроса. Я имел ввиду уровень выше. Типа поигрался классами на клиенте, кости бросил.... и вот вам - эффективный запрос с другими JOINами Дело не в склейке текста. Дело в том, будет ли запрос повторяться, или каждый раз после "игры" он будет другой (ведь достаточно отличия в 1 символе, чтобы получился повторный разбор) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 16:03 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
_xrus Какой еще сайв_то_блоб. Вы не понимаете наверно о чем мы говорим. это ты пока не понимаешь. Это простейший ORM. Не надо всё усложнять так, чтобы "порог вхождения был большой" :). Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 16:10 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
tru55 Дело в том, будет ли запрос повторяться, или каждый раз после "игры" он будет другой (ведь достаточно отличия в 1 символе, чтобы получился повторный разбор) повторный разбор - малая из бед, которая решается техническими срествами (не сегодня завтра). После отличия в один символ, он вообще может выдавать неправильный результат. /topic/12992#57518 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 16:15 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Petro123 tru55 Дело в том, будет ли запрос повторяться, или каждый раз после "игры" он будет другой (ведь достаточно отличия в 1 символе, чтобы получился повторный разбор) повторный разбор - малая из бед, которая решается техническими срествами (не сегодня завтра). После отличия в один символ, он вообще может выдавать неправильный результат. /topic/12992#57518 Ошибки - это отдельная статья. Я то хотел подчеркнуть другую сторону (сам с этим сталкивался). Люди ради удобства программирования или настройки приложения идут на подобную динамическую генерацию, а то, что при интенсивной нагрузке на базу это может серьезно просадить производительность - об этом не думается... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2008, 16:36 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
ru55 +1 да, мы говорим о двух сторонах генерации SQL на клиенте. Бывает, толковый программист со знанием ООП, но с более слабым знанием СУБД начинает "тянуть одеяло" на клиента и городить удивительные огороды. Кстати в ORM есть куча недостатков и ограниченности по применению. "Сложнее всего достигнуть простоты..." ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2008, 11:17 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Сугубо ИМХО... Очень часто при оценке стоимости и рисков проекта от ORM отказываются. Хотя бы потому, что SQL-программиста найти гораздо проще, чем разбирающегося в этой ORM (хорошо еще, если не самодельной) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2008, 16:21 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
rilioСугубо ИМХО... Очень часто при оценке стоимости и рисков проекта от ORM отказываются. Хотя бы потому, что SQL-программиста найти гораздо проще, чем разбирающегося в этой ORM (хорошо еще, если не самодельной) - я лично не фанат использования ORM, но хочу отметить что в Java есть даже спецификация JPA, расчитанная на использование сторнних ORM, т. е. на сегодняшний день это возможность использования ORM в Java стандартизована и если программист не разбирается в стандартах - это грустно. Не хочется начинать холивары, но технология EJB успешно существует уже более 11-ти лет и использование ORM - это одна из существенных составляющих данной технологии. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2008, 17:52 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Kachalov, в Java стандартизована и если программист не разбирается в стандартах - это грустно. Не хочется начинать холивары ну, Java - отдельный разговор. Там много чего знать нужно :). Код: plaintext 1. 2. 3.
:) авторНу конструктор гуи там тоже Интересно, там таблицы есть? В каком они виде? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2008, 00:31 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Kachalov- я лично не фанат использования ORM, но хочу отметить что в Java есть даже спецификация JPA, расчитанная на использование сторнних ORM, т. е. на сегодняшний день это возможность использования ORM в Java стандартизована и если программист не разбирается в стандартах - это грустно. Не хочется начинать холивары, но технология EJB успешно существует уже более 11-ти лет и использование ORM - это одна из существенных составляющих данной технологии. Больше года как отошел от Java, но, если не ошибаюсь: - JPA возникла только в EJB3, это, кажется, 2 или 3 года назад? - различия между теми же EJB2 и EJB3 были очень существенными. Программистам приходилось переучиваться. - ORM - это далеко не только EJB. Hibernate, JDO и куча еще всякого. Видел работающие системы на EJB, где как раз ORM была не стандартной, а самодельной. - Есть стандарты, а есть их реализации. Допустим, программист всю дорогу работал с JDO, а у нас - Hibernate. Сколько ему понадобится времени на адаптацию? IMHO не один день... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2008, 12:41 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
rilio- JPA возникла только в EJB3, это, кажется, 2 или 3 года назад? - да, но необходимость использования ORM была заложена в спецификацию EJB в виде наличия в спецификации CMP Entity компонентов и языка EJB QL, т. е. 11 лет назад! rilio- различия между теми же EJB2 и EJB3 были очень существенными. Программистам приходилось переучиваться. - т. к. EJB3 заметно проще чем EJB2, то "переучиваться" легко и приятно, слово "приходилось" вряд ли тут уместно :) rilio- ORM - это далеко не только EJB. Hibernate, JDO и куча еще всякого. Видел работающие системы на EJB, где как раз ORM была не стандартной, а самодельной. - а кто говорил что ORM == EJB ? Дословно: "использование ORM - это одна из существенных составляющих данной технологии", да и вообще, я привел Java/EJB/JPA как пример знакомой мне технологии использующей ORM, уверен что в других языках есть нечто подобное, например PHP/Doctrine и т. п. rilio - Есть стандарты, а есть их реализации. Допустим, программист всю дорогу работал с JDO, а у нас - Hibernate. Сколько ему понадобится времени на адаптацию? IMHO не один день... - есть стандарты, а есть их кривые реализации :) Стандарт JPA тем и хорош что не надо вникать в особенности TopLink или Hibernate, если они реализуют стандарт JPA, то достаточно знать только его. Переписывать грамотный EJB3 код (без native SQL и т. п.) из-за смены ORM обычно не требуется :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2008, 13:18 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Petro123 Код: plaintext 1.
какой странный синтаксис. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2008, 10:29 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
Вообще имхается мне что варианты 1 или 2 нужно выбирать руководствуясь требованием проекта. вариант 2 мне почемуто напоминает патерн интерпретатор, характеризуемый так: "Проблема: Имеется часто встречающаяся, подверженная изменениям задача." "Решение: Создать интерпретатор, который решает данную задачу. " Помоему при значительной общности задач обработки объектов вариант 2 может показаться очень разумным. А кривоватось, она лишь следствие недоработанности идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2008, 10:39 |
|
Генерация SQL - классами.
|
|||
---|---|---|---|
#18+
trdm Petro123 Код: plaintext 1.
какой странный синтаксис. - Класс! На тебе поток, сохранись в него! - БД! На тебе поток, сохрани его! При "рождении" класса из БД, порядок обратный. ЗЫ. Суть в том, что средства сериализации объектов уже давно заложены в ЯП. И с некоторыми ограничениями могут успешно использоваться для сохранения в БД объектной модели клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2008, 09:30 |
|
|
start [/forum/topic.php?fid=33&fpage=44&tid=1548770]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 456ms |
0 / 0 |