Может я чего-то не понимаю?!!
От: AlexGK Россия  
Дата: 23.08.06 14:02
Оценка: 2 (1)
Здравствуйте!

Перехожу с .Net на Java, возникает масса вопросов....
Например: архитектура ВЕБ-приложений для .NET с которыми я всегда работал выглядела примерно следующим образом:

______________________________
| UI| WEB serv |Win serv |...|
|___|__________|_________|___|
| Сервисный слой |
|____________________________|
| БД |
|____________________________|

Сервисный слой — объекты для вызова хранимых процедур (ХП) из БД, кроме того содержат интерфейсы сущностей из БД, слой осуществляет обработку результата выполнения ХП, если есть необходимость то осуществлял маппинг. Вся бизнес-логика реализована на сервере БД и вызывается сервисным слоем.
Сервисный слой также решал проблемы при одновременном обновлении, а точнее обновлении "устаревших" данных, выдавая нужное исключение

Ну и UI, который "общался" с БД посредством сервисного слоя.

Вся система допускала масштабирование на кластере.
-----------------------------------------------------------
Столкнувшись с Java и иже с ним (EJB,Hibernate и проч.) в упор не понимаю зачем они нужны??!

Часто встречаю использование хибернейта в проекте — в итоге получается, что обновление данных происходит в вызывающем java коде, который загружает запись (объект), изменяет поле и сохраняет объект (запись) в БД.
Это все приводит к тому, что при клике на пункт меню в веб-приложении происходит почти 40 (!!!) обращений к базе (и это рабочая система!, в этом проекте нет ни одной хранимой процедуры!)
Ведь хп были придуманы именно для того, чтобы не было проблем для вызывающего кода, чтобы упростить работу с БД. В итоге получается, что мы идем в обратную сторону, т.к. нам уже сложно писать хранимки и работать с базой?!
При этом утверждается, что хибернейт весьма производителен. Не верю! 40 нескомпилированных запросов не могут быть производительными. Я не говорю о тупости разработчиков, там действительно сделать по-другому через хибернейт очень сложно, но можно написать одну хранимую процедуру.
Можно возразить, что хиберней удобен для маппинга и можно заставить вызывать его те же хранимки. Итого получится — сервисный слой "раздваивается".

О EJB — много читал, и придумал лишь одно применение (но весьма сомнительное) — "толстый" (в смысле обычное GUI или апплет, короче не WEB) клиент, но никак не WEB. Объясните — в каких случаях он применим? Как я понял он, кроме всего прочего, заменяет сервисный слой, но мне с трудом верится, что обойдется без ХП, в итоге — ... в итоге чушь.

Или я чего-то не понимаю? Заранее благодарен за ответ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.