powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Где должна лежать бизнес-логика в мнгоуровневом приложении
25 сообщений из 318, страница 10 из 13
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36487812
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчикiscrafmда можно взять самый банальный пример. В товарах по заданному условию заменить значение категории товара.
ну... я думал вы покажете сложное условие с переменным колличеством параметров

зачем? достаточно банального
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36487830
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmdrevпроверка, что значение входит в границы диапазона , это валидация или верификация?
верификация

There are several types of data validation .

•Data type validation.
Range checking .
•Code checking.
•Complex validation.

http://msdn.microsoft.com/en-us/library/aa291820(VS.71).aspx

Вы согласны?
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36487892
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dreviscrafmdrevпроверка, что значение входит в границы диапазона , это валидация или верификация?
верификация

There are several types of data validation .

•Data type validation.
Range checking .
•Code checking.
•Complex validation.

http://msdn.microsoft.com/en-us/library/aa291820(VS.71).aspx

Вы согласны?
без привязки к контексту - вполне.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36487903
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...и тут мне вспомнился фон-нейман, в частности его 3й принцип .
Код: plaintext
1.
2.
------------------------------
!Напрасный труд хуже пьянства!
------------------------------
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36487918
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev, многие путают эти понятия.
у них даже определения, в том же ISO практически одинаковые. Несколько "но"...
1. верификация всегда выполняется до валидации, ни никак не наоборот
2. если верификация говорит, что да, данные соответствуют, то валидация подтверждает результаты верификации... утверждает, фиксирует.. как больше нравится, смысл от этого не меняется.
если, допустим, на клиенте выполняется верификация правильности исходных данных для транзакции (проверка на соответствие заданным ограничениям), то процедура валидации, выполнив транзакцию и доказав тем самым их правильность, подтверждает это. Слово "доказав" - ключевое для понимания различий в этих двух терминах.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36487971
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчикух... действительно... лочить из клиента, с хинтами...
покажите пример, перепишите на СП ту процедуру, которую я привел в пример... хотябы примерно.. на знакомо вам языке
мне правда очень интересноНу учитывая то, что смысл половины выполняемых вами в этой процедуре действий мне вообще не понятен. Зачем делается блокировка двух таблиц я понять не смог, уровень изоляциив serialazable для такой тривиальной задачи мне бы и в страшном сне не приснился. Ну а загадочные манипуляции с ERROR_NUMBER... Возможно тут специфика MSSQL. Я попытаюсь вкратце описать понятный мне смысл: задача процедуры - вставить запись в таблицу избежав появления дубликатов. При этом выполняется фиксация транзакции. Есть еще манипуляции с логгированием, но это вообще в стандартном обработчике исключений должно быть и к вставке записей в конкретную таблицу относиться не должно.
Если задача действительно такова, то для ее выполнения в Oracle я бы просто повесил unique на таблицу и сделал простой инсерт обрамив его try-catch блоком для того, чтобы отформатировать сообщение об ошибке.
На Java это будет выглядеть примерно так (ни компилировать, ни выполнять не пытался)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
try{
   call = connection.prepareCall('insert into a_flat_list(street_id, build_num, build_char, room_num, room_char)
        values(?,?,?,?,?) returning flat_id into :1');
   call.setInt( 1 ,street_id);
   if(build_num== 0 ) call.setNull( 2 ,build_num);
   else call.setInt( 2 ,build_num);
   call.setString( 3 ,build_char);
   if(room_num== 0 ) call.setNull( 4 );
   else call.setInt( 4 ,room_num);
   call.setString( 5 ,room_char);
   call.registerOutParameter( 1 , OracleTypes.NUMBER );
   call.execute();
   flat_id = call.getInt( 1 );
   connection.commit();
}catch (Exception e){
   connection.rollback();
   err_msg = e.getText();
}
Надо сказать, что вызов вашей процедуры будет выглядеть точно также :)
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36487973
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно на примере любой системы резервирования билета на авиарейс посмотреть (несколько лет уже не пользуюсь услугами билетных касс для этой цели). Первым делом выполняется верификация данных для транзакции резервирования. Проверяются пункты отправления и назначения, доступность выбранного рейса на требуюмую дату, наличии мест выбранного класса (предварительно на момент запроса, естественно) и т.д. и т.п. Для этого на "клиента" подтягивается вся необходимая информация. После подтверждения оплаты выполняется окончательная валидация и резервирование, клиент получает доказательство того, что место в салоне зарезервированно, в виде электронного билета.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36487978
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри за опечатки
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488102
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyВозможно тут специфика MSSQL. Я попытаюсь вкратце описать понятный мне смысл: задача процедуры - вставить запись в таблицу избежав появления дубликатов. При этом выполняется фиксация транзакции. Есть еще манипуляции с логгированием, но это вообще в стандартном обработчике исключений должно быть и к вставке записей в конкретную таблицу относиться не должно.
Если задача действительно такова, то для ее выполнения в Oracle я бы просто повесил unique на таблицу и сделал простой инсерт обрамив его try-catch блоком для того, чтобы отформатировать сообщение об ошибке.Нет здесь никакой специфики MSSQL, только специфика девелопера.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488420
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAНет здесь никакой специфики MSSQL, только специфика девелопера.Я это подозревал, но не был на 100% уверен.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488452
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyНу учитывая то, что смысл половины выполняемых вами в этой процедуре действий мне вообще не понятен. Зачем делается блокировка двух таблиц я понять не смог, уровень изоляциив serialazable для такой тривиальной задачи мне бы и в страшном сне не приснился. Ну а загадочные манипуляции с ERROR_NUMBER... Возможно тут специфика MSSQL
с уровнем изоляции, наверно и в правдо "жесковато", и именно для одно инсерта это лишнее, а все остальное придумал не я
http://msdn.microsoft.com/ru-ru/library/ms179296(SQL.90).aspx
примерно по середине страницы
Следующие сценарии кода для сеанса 1 и сеанса 2 выполняются одновременно....
...
Ошибка жертвы взаимоблокировки приведет к тому, что управление внезапно будет передано блоку CATCH и транзакция перейдет в нефиксируемое состояние. Внутри блока CATCH жертва взаимоблокировки может выполнить откат транзакции и вновь пытаться обновить таблицу до тех пор, пока процесс обновления не завершится успешно или пока не будет исчерпан лимит попыток. К прекращению попыток обновления таблицы приведет то из перечисленных событий, которое наступит первым.

меня по правде и интерисовало каким образом вы реализуете что написано выше, а не параметризированный запрос. Хотя, познавательно.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488518
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyChAНет здесь никакой специфики MSSQL, только специфика девелопера.Я это подозревал, но не был на 100% уверен.Да за одно это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if @build_num =  0  set @build_num = null;
if @room_num  = 0   set @room_num  = null;

-- проверит что квартиры с такими буквами и номерами нет в базе
SELECT @flat_id = a.flat_id
FROM dbo.a_flat_list a
WHERE a.street_id  = @street_id
AND   a.build_num  = @build_num
AND   a.build_char = @build_char
AND   a.room_num   = @room_num
AND   a.room_char  = @room_char;
надо увольнять без выходного пособия.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488603
web_fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChABogdanov AndreyChAНет здесь никакой специфики MSSQL, только специфика девелопера.Я это подозревал, но не был на 100% уверен.Да за одно это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if @build_num =  0  set @build_num = null;
if @room_num  = 0   set @room_num  = null;

-- проверит что квартиры с такими буквами и номерами нет в базе
SELECT @flat_id = a.flat_id
FROM dbo.a_flat_list a
WHERE a.street_id  = @street_id
AND   a.build_num  = @build_num
AND   a.build_char = @build_char
AND   a.room_num   = @room_num
AND   a.room_char  = @room_char;
надо увольнять без выходного пособия.

ChA,

ваш поступок низок. В теме обсуждают "Где должна лежать бизнес-логика в мнгоуровневом приложении".
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488615
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
web_fox
ChA,

ваш поступок низок. В теме обсуждают "Где должна лежать бизнес-логика в мнгоуровневом приложении".
web_foxВижу, что вы не понимаете этих вещей просто по неопытности. Это не в обиду, но вопросы выглядят просто незрелыми, да ещё с оттенком задаваки[/quot]
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488635
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
web_foxChA,
ваш поступок низок. В теме обсуждают "Где должна лежать бизнес-логика в мнгоуровневом приложении".
web_fox
во, видно опытного человека.
web_fox, Вас задело то, что человека, которого вы при виде приведенного выше текста назвали опытным, кто-то посмел немного покритиковать?
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488885
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA, ну вы хоть объясните что там такого страшного, ни как не пойму ваших загадочных намеков.
нули в null превратил? так мне в дальнейшем удобнее, либо цифры(не нули), либо null
очень обидело когда я не правильно мантру про блокировки сказал?
каюсь, так и не выловил кто кого лочит, и решил чтоб наверняка, все операции обернул в TRY, уровень SERIALIZABLE и WITH(TABLOCK) всех "зависимых" таблиц
что ещё? вы там кстати ещё одну ошибку не заметили

эх, рано ещё мне к вам в падаваны, недорос... пойду учить мантры

iscrafm...кто-то посмел немного покритиковать...
давайте давайте...

кто что ещё хочет сказать по поводу моей специфики... в смысле квалификации? )))
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488886
ОКС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm
Верификацию действительно делают на клиенте. Валидацию тоже конечно можно, если система для монопольного использования.

Очень, очень красивое решение - валидация на клиенте.
Вам бы банковское ПО проектировать.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488932
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчикменя по правде и интерисовало каким образом вы реализуете что написано выше, а не параметризированный запрос. Хотя, познавательно.Если на пальцах, то при вставке записи в таблицу имеющую уникальный индекс СУБД сама блокирует необходимые ветви индекса обеспечивая отсутствие дубликатов вне зависимости от числа одновременно работающих пользователей. Если несколько сессий одновременно попытаются вставить одно и то же значение, то вторая из них повиснет на блокировке вплоть до завершения транзакции в первой. А после commit или rollback в первой выдаст либо сообщение о нарушении уникальности, либо позволит вставить. Если же разные сессии вставляют непротиворечащие друг другу записи, то никаких ожиданий не будет.
Если же речь о взаимной блокировке (deadlock), то тут несколько сложнее, но и возникает такая блокировка нечасто (и решается обычно не специальной ручной блокировкой чего-то, а более аккуратным отношением к последовательности выполнения операторов), а уж при вставке единственной записи внутри транзакции получить такое и вовсе невозможно. Но ликбез по deadlock я проводить не буду - это в рамки одного поста вряд ли влезет. Написанное к Oracle относится, но думаю, что и в других СУБД поведение похоже.

КифирчикChA, ну вы хоть объясните что там такого страшного, ни как не пойму ваших загадочных намеков.
нули в null превратил? так мне в дальнейшем удобнее, либо цифры(не нули), либо null
Страшно, то что вы производите сравнение с null-значением и, видимо, даже не подозреваете о подводных камнях встречающихся при этом.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488949
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКСiscrafm
Верификацию действительно делают на клиенте. Валидацию тоже конечно можно, если система для монопольного использования.

Очень, очень красивое решение - валидация на клиенте.
Вам бы банковское ПО проектировать.
а что, банковское ПО стало однопользовательское? Не встречал. Поделитесь ссылкой?
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488955
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКСiscrafm
Верификацию действительно делают на клиенте. Валидацию тоже конечно можно, если система для монопольного использования.
Очень, очень красивое решение - валидация на клиенте.
Вам бы банковское ПО проектировать.
хотя подумал и нашел объяснение. Похоже просто загадочный ОКС не совсем понимает о чем говорит. Другого объяснения не получается.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488957
ОКС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm[quot ОКС][quot iscrafm]
а что, банковское ПО стало однопользовательское? Не встречал. Поделитесь ссылкой?

Считаю, что проектировщик, который выносит валидацию на сторону клиента с таким же успехом справится и с банковским ПО.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488959
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКСiscrafm[quot ОКС][quot iscrafm]
а что, банковское ПО стало однопользовательское? Не встречал. Поделитесь ссылкой?

Считаю, что проектировщик, который выносит валидацию на сторону клиента с таким же успехом справится и с банковским ПО.
и я так считаю. Вроде по-русски написано. Или загадочный ОКС не совсем понимает по-русски?
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488963
ОКС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafmхотя подумал и нашел объяснение.

Это хороший, годный метод.
Не стесняйтесь его использовать.
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488966
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКС,

что сказать то хотели?
...
Рейтинг: 0 / 0
Где должна лежать бизнес-логика в мнгоуровневом приложении
    #36488970
ОКС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafm,

Смысл какого именно слова вам объяснить?
...
Рейтинг: 0 / 0
25 сообщений из 318, страница 10 из 13
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Где должна лежать бизнес-логика в мнгоуровневом приложении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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