0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
|
1 | |
Костность мышления: таблицы и бины...22.05.2009, 22:10. Показов 2736. Ответов 18
Метки нет (Все метки)
Проблема: ну базы меня научили писать и даже проектировать (ха-ха). А вот как спроектировать EJB-систему? Что в качестве бинов брать?
Область - технологические процессы производства. Есть операции, из них составляются схемы (ориентированные нагруженные графы), у операций есть ресурсы (люди, оборудование) и расходные материалы, есть готовые продукты. Потом все это грузится, отображается для пользователя в удобоваримом виде и анализируется с помощью теории сетевого планирования и управления. Короче, все понятно, но что здесь за сущности? А что в сессионные запихивать? Ну хоть какие соображения есть? Критерии отбора?
0
|
22.05.2009, 22:10 | |
Ответы с готовыми решениями:
18
Посоветуйте задания для развития мышления Session stateless бины Spring. отловить момент, когда все бины уже автоварены Постановка мышления Java-JuniorDeveloper |
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
23.05.2009, 01:17 | 2 |
ого, масштаб вопросика...
ну раз проектировать базы уже умеешь, то особых сложностей с ентити бинами не будет. они и будут твоей моделью. хотя какие они будут, уже зависит от схемы базы и требований по скорости (если есть особые какие). то есть получается, сюда попадут твои ресурсы, люди и связанные с ними данные. в сессионные бины пойдут всякие процессоры и считалки для этих ресурсов. например, ты там говорил про какую-то теорию планирования - вот тебе уже кандидат верный для такого бина. однако, если там несложные расчеты и особо с базой и другими бинами не ковыряется, то имеет смысл забацать его просто в виде ютилити класса со статическими методами - это так, чтобы особо не выпендриваться без надобности и память сэкономить. в 2 абзацах так дело обстоит. а вообще постарайся более конкретно потом спросить - больше ответов будет
0
|
0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
|
23.05.2009, 16:04 [ТС] | 3 |
Ну с сессионными я разберусь, а вот с сущностными проблематичнее. Про всякие там ресурсы, люди, материалы понятно. Но мне нужно в базе (реляционной) хранить ориентированный нагруженный граф с циклами и двумя типами ребер. Как это в базе выглядит я представляю (с помощью двух таблиц, хранящих собственно ребра двух видов, и нескольких таблиц для нагрузки), а вот что тут будет бинами? Ребра? Или вообще сущностного бина не делать для графа, а работать с ним напрямую из сессионного бина (одного). Но тогда он должен быть StateLess, да и то будет ли по части паралелльго доступа все корректно?
Везде примеры банальны до безобразия - магазин, система заказов, библиотека. А как насчет структур посерьезней - с графами в EJB кто-нибудь вообще работал?
0
|
0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
|
23.05.2009, 16:08 [ТС] | 4 |
Кстати, совсем забыл. Как вообще лучше - самому скрипт для базы писать, или позволить при развертывании создать все? Если самому, то как там с отношениями EJB20, да и имена таблиц потом что везде самому прописывать?
Извините, если глупый вопрос.
0
|
1 / 1 / 5
Регистрация: 22.07.2007
Сообщений: 366
|
|
24.05.2009, 10:06 | 5 |
Вы меня конечно извените.. Но зачем тогда сущностные бины вообще. Если чесно отдовать себе отчёт то сущностные бины нужны если возможно база у тебя стоит на одном компе, бины (сущностные на другом), сессионные на третем и все они друг друга терзают через IIOP и всё это на разных системах (чесно говоря в моём проекте приблизительно так и есть). Но вот что скажу есть такой анекдтот '20 лет работаю режисёром порнофильмов и до сих пор не знаю зачем порнофильмам режисёр'. Вот сейчас мы закончили проект, провели тесты производительности (лично сам проводил) - заказчик 'У шоку', мы боимся что денег не даст. Короче я всё к чему, если ты очевидной выгоды от использования Entity beans здесь не видишь то и не надо тогда их использовать вообще.
0
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
24.05.2009, 11:59 | 6 |
Пропустите-пропустите, дайте и мне свои две копейки приткнуть :-))
У меня сложилось такое видение вопроса: человек уже знает (!), как вся это ботва будет храниться в БД. Так это же здорово! Считай, модель данных готова. Теперь вопрос: использоавть Entity или нет? Мой ответ: как хочешь. Допустим, выбор пал на 'да'. Вопрос №2: CMP или BMP? Мой ответ: как надо. А 'надо' зависит как раз от ответов на те вопросы, что ты задавал: как расценивать бины, какой логикой их нагружать и т. д. Если это CMP, то а) их писать проще (намоного проще), чем BMP; б) одна таблица -- один бин (свзяующую тбл. в отношение M2M можно спрятать); в) кол-во запросов к БД всегда n+1, где n -- кол-во загружаемых поисковиком (finder-метод) записей; г) пункт в) справедлив, только если запрос к БД осуществляется. Аппсервер мог закешировать как-нть и что-нть и вообще не делать запроса. И это второе и более существенное преимущество CMP перед BMP, нежели пункт а). Преимущество BMP, на мой взгляд, единственное: бин может инкапсулировать в себя не одну таблицу, а моделируемую сущность целиком. Я не знаю, завершился ли хоть один проект при таком подходе к инкапсуляции логики в Entity бинах, но когда я попытался таким же образом подойти к одному из своих проектов, через какое-то время мне пришлось отказаться от посыла 'несколько таблиц, представляющие одну моделируемую сущность реального мира, -- один бин'. И все быренько переделал не CMP :-)) По поводу того, что сказал simplepilot. > Если чесно отдовать себе отчёт то сущностные бины нужны если > возможно база у тебя стоит на одном компе, бины (сущностные на > другом), сессионные на третем и все они друг друга терзают через > IIOP и всё это на разных системах (чесно говоря в моём проекте > приблизительно так и есть). Только не для EJB 2.0. Преимущество получаем именно из-за локальных интерфейсов Entity бинов -- раз, ни в коем случае не открываем ни один из Entity бинов во вне, то есть не определяем удаленный интерфейс -- два. > Но зачем тогда сущностные бины вообще. Да, есть другие варианты, например, JDO. И последнее. Пока нет БД, точнее, пока нет МОДЕЛИ ДАННЫХ (желательно в UML на концептуальном уровне), хотя бы более-менее устаканенной, нечего и пытаться проектировать EJB. Это исключительно ИМХО. Думаю, прочитав первую часть книги http://www.theserverside.com/books/EJBDesignPatterns/index.jsp целиком, много вопросов отпадет само собой. Желаю удачи :-))
0
|
0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
|
24.05.2009, 16:35 [ТС] | 7 |
ОК, ОК, убедили - CMP, сначала базу. Но возник другой вопрос. Просто я уже решил провести проектирование до конца, а потом садиться писать.
Мне все это дело надо отображать у клиента в графическом виде (иначе фигня получается), речь конечно только о Web-клиентах. Значит простой HTML отпадает и просто генерить страницы JSP, обрабатывая запросы сервлетами, не получится. Намекаю на апплеты. Но тут вдруг обнаружил, что никогда не задумывался как организовать настоящий диалог из апплета с сервером: как послать серверу (сервлету, JSP) какие-то данные (выбор пользователя)? Может создать новый урл и get'ом вконец приписать данные? А потом сервлет отработает и апплет читает какой-то файл на сервере с результатами? Но как это во времени утрясти? Можно напрямую посылать апплету что-нибудь? Как то коряво все выглядит.
0
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
||||||
24.05.2009, 18:13 | 8 | |||||
Если можно обойтись без апплета, то я бы постарался это сделать. Нужно отображать графику, хорошо. Почему бы не рисовать картинки на сервере? Конечно в этом случае нельзя расчитывать на активные картинки. Хотя, можно, используя тег map, но уж лучше апплетом, чем map'ом.
Обмен с сервером -- проще простого. Перво-наперво продумываем протокол обмена между апплетом и сервлетом. Транспортом, конечно же, будет выступать HTTP. Удобнее всего передавать сериализованные объекты поверх HTTP. Например, объявить два базовах класса CustomRequest и CustomReponse. У каждого будет метод getType(). Значение type однозначно определяет наследника. Для каждого наследника сфой объект-обработчик, тоже наследник от базовго RequestProcessor или ResponseProcessor (для апплета и сервлета). Ну, это просто. Можно даже пойти дальше: на сервере опереться на API javax.servlet или javax.servlet.http. Сделать свой пакет, который будет уметь обрабатывать оъекты CustomRequest, напрмер, doHandshake(), doPostCoords(), doBye(), do... Когда протокол продуман, запрос-ответ не проблема:
0
|
0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
||||||
24.05.2009, 18:40 [ТС] | 9 | |||||
Danissimo, ты брависсимо! Прямо мои мысли читаешь - я тоже по этому пути двигаюсь. Насчет map даже и не хочу думать, без апплета выводить граф таблицей - все равно, что напевать Битлз вместо концерта.
Вся загвоздка в том, что апплет должен рисовать то, что может меняться в зависимости от действий пользователя, а всю бизнес-логику я все же хочу оставить на сервере. Поэтому то обмен и нужен. Только не пойму, зачем так сложно. Почему так нельзя:
А если потребуется гонять какие-то свои объекты, то по идее достаточно их сериализуемыми сделать и тоже все должно получаться. Я таких вещей не пробовал, скорей всего не все так просто - объясните, где загвоздка.
0
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
24.05.2009, 19:14 | 10 |
конечно, можно и так. а теперь представьте, что за хаос будет с кодом, когда объем интеракций с сервером начнет возрастать. усе у кучу, чтобы потом невозможно было код поддерживать вообще?
может совет Даниссимо и кажется сначала сложноватым, но на самом деле ничего сложного нет. и гораздо лучше будет иметь работать именно с ЛОГИЧЕСКИМИ запросами, а не с физическими. если наследовать страшновато, то этим может заниматься Proxy/Business Delegate, который и будет инкапсулировать весь сетевой код.
0
|
0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
|
24.05.2009, 19:51 [ТС] | 11 |
ОК, mr_dronski, я из вашего ответа еще меньше понял, но охотно верю, что вам с Danissimo виднее. Может потратие еще немно времени, объясните подробнее, что к чему - как домохозяйке
- что делает и зачем нужен метод getType() - что за наследники - чьи, зачем, что из себя представляют - этот код продолжение идеи или ты уже на другой вариант переключился - где находится и что делает класс HTTPClient (по сути, методы то я все понял) Да, mr_dronski, мне ничего не страшно, просто я во всем, что мне нужно хочу разобраться, именно поэтому всякие навороты не люблю использовать, я и пишу все практически в блокноте с компилятором. Это не в обиду, а так - если уж сильно надоел, звиняйте. За отзывы спасибо, жду еще.
0
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
24.05.2009, 21:06 | 12 |
это скорее были различные решения одной проблемы. ок, прикинем. раз ориентируемся на EJB, то будем применять решения, свойственные этой технологии. Бизнес делегат нужон будет по-любому, а то смотришь, а клиент уже хочет универсальной переносимости, и апплет его не везде устраивает. вот он-то и будет общаться с АппСервером.
чем здесь занимаются сервлеты? основная их задача будет - конвертить ХТТП запросы в логические запросы по нужному домену. я с графами дело не имел, поэтому из пальца высасывать не буду. у Даниссимо было пару примеров в эту сторону. цепочка примерно так выглядит (для веб приложения и для апплета): view --> servlet --> delegate --> ejb applet --> delegate --> ejb если с умом все спроектировать и продумать все лэйеры эксепшнов, то делегат будет ОДИН для всех видов клиентов. предложенный вариант с наследованием сервлета тоже решает проблему, но скорее, в домене обычного несложного приложения. если что-то было непонятно объяснено в наследовании, то не переживай, я тоже не все понял, потому что не вникал и мысли были заняты другим проектом. решать только тебе, поскольку лучше, чем ты, проблему тут никто не знает. а мы уже поможем по мере возможностей
0
|
0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
|
24.05.2009, 21:53 [ТС] | 13 |
Я тут в поисках на интересную статью наткнулся - мужик идею: ему хотелось простенькие картинки по запросу клиента генерить - типа график акций, счетчик посещений - в общей создается image, рисуется в нем чего нужно, потом кодируется в JPEG (!!!-самый узкий момент), а потом это дело посылается сервлетом через обычный HTTP на страницу. Если пожертвовать некоторой долью интерактивности (вернее ее визуальной частью), то мне такой вариант подойдет. Одна беда - я пока не нашел, где описано хоть как нибудь как image в JPEG кодировать, хотя в спецификации есть пакет из 4-х классов на эту тему. Ну есть какие мысли по этому поводу?
0
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
25.05.2009, 00:46 | 14 |
а ты уже решил, как ты будешь генерить картинки?
может, имеет смысл тогда уже пользовать готовые АПИ, а в них есть и утилиты для конвертации в нужный формат и для сериализации в байт-массив для пересылки по ХТТП. ну короче, это я к тому, что для меня отлично работает JFreeChart. конвертю я в ПНГ, но для меня самое узкое место - парсинг больших объемов биржевых данных на лету + сборка коллекций отпарсенных объектов в коллекцию. в любом случае - 650х480 рисуется без каких-либо тормозов и летит по сети, летит...
0
|
mishgun
|
|
25.05.2009, 07:55 | 15 |
Вот типа решил встрять...
Динамически можно рисовать картинки и сервлетом и не надо упираться в апплет.Если надо могу скинуть пример кода ну а если нет ну на нет и суда нет))) Другое дело если типа клиент сидит перед компом чешет репу а ему на экран всякие графики кажде 5 секунд рисуются тогда конечно аплет-сервлет |
mishgun
|
|
25.05.2009, 07:57 | 16 |
Хотя по моему методами джаваскрипт можно каждые 5 секунд типа апдейтать запросы к сервлету и тогда аппилет нэ нужэн.Это я чиста в думки впал))
|
0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
|
25.05.2009, 09:11 [ТС] | 17 |
Да, я когда про картинки писал, то и имел в ввиду, что можно от апплета отказаться, а генерить их сервлетом и посылать уже страничку обычную и все. Если уж очень захочется добавить выбор прямо из картинки чего-то можно со скриптами поизвращаться для отслеживания мыши - самое главное апплет не нужен.
Если есть, как рисовать картинки в какой-нибудь общепринятый формат - скиньте, буду благодарен. Только есть ли такие штуки в стандартном наборе, а не в дополнительных пакетах - не хотелось бы уходить по закоулочкам. serg-2000@mail.ru
0
|
mishgun
|
||||||
28.05.2009, 06:55 | 18 | |||||
|
0 / 0 / 0
Регистрация: 02.01.2009
Сообщений: 134
|
|
28.05.2009, 16:01 [ТС] | 19 |
mishgun, спасибо. Именно с этого и начну пробовать. Сейчас уже ушел в другую сторону - пока написал бины, буду бизнес-логику писать, но когда дойду уже конкретно до этой проблемы - попробую и напишу как прошло. По-моему все-таки картинки на лету генерить лучше будет, чем с апплетом связываться.
Эй,что с сервером?
0
|
28.05.2009, 16:01 | |
28.05.2009, 16:01 | |
Помогаю со студенческими работами здесь
19
Что первичнее: бины или бд алгоритм мышления Тест на Тип мышления Освоение C для правильного мышления Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |