Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> целесообразность использования J2EE, J2EE для маленькой фирмы 
:(
    Опции темы
DimW
Дата 17.12.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 3
Всего: 44



Цитата(mbasil @  17.12.2009,  13:55 Найти цитируемый пост)
Полагаю, что дальнейший обмен колкостями смысла не имеет. 

я бы согласился с вами, но не могу сдержаться, прокоментирую некоторые ваши реплики. такое чувство что вы даже не попытались сделать шаг к тому что понять меня. :(

по 1.
Цитата(mbasil @  17.12.2009,  13:55 Найти цитируемый пост)
1. Из вашего примера выходит, что вся бизнес логика приложения заключается исключительно в запросах и DML операциях, а также в минимальных проверках.
Очевидно, что таких процедур у вас немного. Впрочем, даже в этом случае есть смысл воспользоваться пакетами.


да, не следует этого из моего примера, это общий случай, в 90% БЛ это манипуляция данными с учетом правил, которые накладывает бизнес процесс. и обсолютно не важно, простая валидация используется или сложная, простой DML, или сподвывертом, два DML оператора или один. в конце концов это не важно, для конечного использования бизнес единицы, пусть это будет процедура, пусть она будет в пакете, пусть это метод в классе на другом уровне. 

Цитата(mbasil @  17.12.2009,  13:55 Найти цитируемый пост)
Дальше все - россыпь однородных объектов (пакетов). При большом количестве разбирайся, как хочешь. Нет структуры более высокого уровня, а значит она вам не нужна.

пакет->процедуры(функции) - однородные объекты  smile 
класс->методы - ну пипец какое разнообразие  smile 
если нет четкого описания бизнес действие ---> объект_исполнитель(не важно какого уровня), то надеятся на успешный проект не стоит.
к счастью такие средства(CASE) есть.

по 2.
опять вы про то как "можно"...

по 3.
Цитата(mbasil @  17.12.2009,  13:55 Найти цитируемый пост)
что информацию надо кэшировать ближе к тому слою, в котором она используется.

ну так ничего и не мешает, кеширование результата, на БЛ оказывать влияние не может, так что нужно кеширование- реализовывайте, не нужно так не нужно...

по 4.
Цитата(mbasil @  17.12.2009,  13:55 Найти цитируемый пост)
4. Мы же говорили о масштабировании. То есть о потенциальном росте нагрузки. Подумайте, что проще кластеризовать, сервер приложений или сервер базы данных и что будет стоить дороже.

mbasil, я ведь не зря на пинок нарывался:
Цитата(DimW @  17.12.2009,  11:38 Найти цитируемый пост)
величив мощности на сервере приложений вы всего лишь позволите большему числу пользователей одновременно воспользоваться API которое добавляет нового клиента, сам же оператор INSERT выполняется на стороне БД, таким образом вся ваша маштабность на одной стороне закончилась, как только обработчик покинул уровень приложения.

думал вы как то подтвердите или оправергните мое умозаключение, не могу я оценить что будет дешевле и проше, нет такова опыта, в отличие от вас. от того и общаюсь с вами на эту тему, что бы наконец это понимание у меня было.

если у вас еще осталось желание, то прошу прокомментировать 4 пункт, прав я или нет.
спасибо.

Добавлено через 12 минут и 9 секунд
Цитата(COVD @  17.12.2009,  14:23 Найти цитируемый пост)
удобны тем, что это скрипт: внес изменения - и они сразу вступили в силу после сохранения.

и тем самым "разваливает" все зависипые объекты, и все сессис из пула твердят что "состояние пакетов было сброшено" smile

Цитата(COVD @  17.12.2009,  14:23 Найти цитируемый пост)
ХП хороши, когда надо совершить, например, действие над несколькими таблицами. Интуитивно ясно, что правильнее это доверить механизму базы данных (т.е. ХП), нежели "дергать" таблицы во внешнее приложение. 

Цитата(serger @  17.12.2009,  14:28 Найти цитируемый пост)
И отсюда, даже приведя кучу примеров компонентов, мы только в комплексе сможем решить, как лучше реализовать их взаимодействие, что, опять таки, для бизнес-приложений не реально.


COVDserger, согласитесь, что размазывать БЛ по нескольким уровням из за удобства это тоже не есть гуд.



PM MAIL ICQ   Вверх
DimW
Дата 17.12.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 3
Всего: 44



to all: 
вы занаете, я наверное сам виноват в вашем недопонимании, я не привел ни одного примера, как я вижу разработку веб приложений с использованием ХП.

рассмотрим один из модулей системы, которую я разрабатываю и поддерживаю.
скрин модуля в приложенном файле.

и так:
1) MVC(в моем случае jsp)
Код

<%@include file="/common/moduleHeader.jsp"%>

        <jdbf:form property="applicationUnit" method="post" action="applicationUnit.jsp">
            <jdbf:canvas title="Модули системы" width="850" height="500">
                <jdbf:connect>

                    <jdbf:group title="Поиск модулей" top="15" left="10" width="830" height="40">
                        <jdbf:split align="left" indent="5" top="9" left="10" width="810">
                            <jdbf:label title="Название:"/>
                            <jdbf:edit property="applicationUnit.name" width="200"/>
                            <jdbf:label title="Адрес (URL):"/>
                            <jdbf:edit property="applicationUnit.url" width="380"/>
                            <jdbf:button property="applicationUnit.find" image="?find?" title="Найти" onclick="doFind"/>
                        </jdbf:split>
                    </jdbf:group>

                    <jdbf:statement property="applicationUnit.stm">
                        <jdbf:query>
                            select id
                                  ,url
                                  ,note
                                  ,name
                              from sys_application_unit t
                             where (:p_name is null or upper(t.name) like upper(:p_name))
                               and (:p_url is null or upper(t.url) like upper(:p_url))
                            order by id desc
                        </jdbf:query>
                        <jdbf:parameter property="p_name" datatype="varchar" value="applicationUnit.name"/>
                        <jdbf:parameter property="p_url" datatype="varchar" value="applicationUnit.url"/>
                    </jdbf:statement>

                    <jdbf:table property="applicationUnit.tbl" statement="applicationUnit.stm" onselectrow="viewDetail" rowcount="11" height="257" width="830" left="10" top="53">
                        <jdbf:column property="id" hidden="yes"/>
                        <jdbf:column property="name" title="Название" width="310"/>
                        <jdbf:column property="url" title="Адрес (URL)" width="500"/>
                        <jdbf:column property="note" hidden="yes" width="310"/>
                    </jdbf:table>

                    <jdbf:label title="Примечание:" left="12" top="320"/>
                    <jdbf:memo property="applicationUnit.note" readonly="yes" top="335" left="10" height="105" width="830"/>

                    <jdbf:split align="right" indent="10" top="450" left="10" width="820">
                        <jdbf:button property="applicationUnit.add" image="?create?" title="Добавить" onclick="doAdd"/>
                        <jdbf:button property="applicationUnit.mod" image="?modify?" title="Редактировать" onclick="doMod"/>
                        <jdbf:button property="applicationUnit.del" image="?delete?" title="Удалить" onclick="doDel"/>
                        <jdbf:button property="applicationUnit.close" image="?close?" title="Закрыть" onclick="doClose"/>
                    </jdbf:split>

                </jdbf:connect>
                <jdbf:error height="70" width="840" top="130" left="5"/>
            </jdbf:canvas>
        </jdbf:form>
        
<%@include file="/common/moduleFooter.jsp"%>


затем сама формачка в которой редактируются значения:
Код

<script>
    function doCancel()
    {
        document.applicationUnitMod.action = "applicationUnit.jsp";
        document.applicationUnitMod.submit();
    }

    function doSave()
    {
        if (IsNull(document.getElementById('applicationUnitMod.name')))
        {
            return false;
        }
        if (IsNull(document.getElementById('applicationUnitMod.url')))
        {
            return false;
        }
        document.applicationUnitMod.action = "<%=request.getContextPath()%>/jdbf-admin.sys_pk_security.modify_application_unit.jdbf";
        document.applicationUnitMod.submit();
    }
</script>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@include file="/common/moduleHeader.jsp"%>

        <jdbf:form property="applicationUnitMod" method="post" action="applicationUnitMod.jsp">
            <jdbf:canvas title="Редактирование модуля системы" width="600" height="320">
                <jdbf:hidden property="applicationUnit.name"/>
                <jdbf:hidden property="applicationUnit.url"/>
                <jdbf:hidden property="applicationUnit.tbl.id"/>
                <jdbf:hidden property="applicationUnit.tbl.property.page"/>


                <jdbf:panel top="10" left="10" height="250" width="580">
                    <jdbf:label title="Название:" top="10" left="12"/>
                    <jdbf:edit property="applicationUnitMod.name" required="yes" top="25" left="10" width="560"/>
                    <jdbf:label title="Адрес (URL):" top="50" left="12"/>
                    <jdbf:edit property="applicationUnitMod.url" required="yes" top="65" left="10" width="560"/>
                    <jdbf:label title="Примечание:" top="90" left="12"/>
                    <jdbf:memo property="applicationUnitMod.note" top="105" left="10" width="560" height="135"/>
                </jdbf:panel>

                <jdbf:split align="right" indent="10" top="269" left="10" width="570">
                    <jdbf:button property="applicationUnitMod.save" image="?save?" title="Сохранить" onclick="doSave"/>
                    <jdbf:button property="applicationUnitMod.cancel" image="?close?" title="Отмена" onclick="doCancel"/>
                </jdbf:split>
                
                <jdbf:error height="70" width="590" top="80" left="5"/>
            </jdbf:canvas>
        </jdbf:form>
        
<%@include file="/common/moduleFooter.jsp"%>


затем мапинг MVC с ХП по адресу - /jdbf-admin.sys_pk_security.modify_application_unit.jdbf (функция яваскрипт doSave())
Код

<action name="/jdbf-admin.sys_pk_security.modify_application_unit">
   <procedure name="sys_pk_security.modify_application_unit">
        <parameter name="p_name" datatype="varchar" type="in" value="applicationUnitMod.name"/>
            <parameter name="p_url"  datatype="varchar" type="in" value="applicationUnitMod.url"/>
            <parameter name="p_note" datatype="varchar" type="in" value="applicationUnitMod.note"/>
            <parameter name="p_id"   datatype="number"  type="in" value="applicationUnit.tbl.id"/>
   </procedure>
   <forward next="/admin/applicationUnit.jsp" error="/admin/applicationUnitMod.jsp"/>
</action>


и сама ХП:
Код

 procedure modify_application_unit(p_id   in sys_application_unit.id%type
                                  ,p_name in sys_application_unit.name%type
                                  ,p_url  in sys_application_unit.url%type
                                  ,p_note in sys_application_unit.note%type) as
 begin
   update sys_application_unit
      set url = p_url
         ,name = p_name
         ,note = p_note
    where id = p_id;
 end;


опять же БЛ не блещет сложностью, но подход думаю понятен.
кто нить может оценить данный подход в плане перспективы использования? 


Присоединённый файл ( Кол-во скачиваний: 21 )
Присоединённый файл  module.jpg 124,13 Kb
PM MAIL ICQ   Вверх
serger
Дата 17.12.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 2
Всего: 5



Цитата(DimW @  17.12.2009,  15:14 Найти цитируемый пост)
COVD, serger, согласитесь, что размазывать БЛ по нескольким уровням из за удобства это тоже не есть гуд.

очень провокационная фраза.. Еле сдерживаюсь...  smile 

В общем, мой опыт смешения был не очень удачный, однако не могу ничего утверждать... Как раз и хотелось бы понять...
И, кстати, вашу позицию, я как-то до сих пор не могу уловить.  smile 


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
DimW
Дата 17.12.2009, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 3
Всего: 44



Цитата(serger @  17.12.2009,  16:18 Найти цитируемый пост)
И, кстати, вашу позицию, я как-то до сих пор не могу уловить. 


serger, топиком выше. если будет нужно поясню подробней. 
PM MAIL ICQ   Вверх
COVD
Дата 17.12.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

COVD, serger, согласитесь, что размазывать БЛ по нескольким уровням из за удобства это тоже не есть гуд.

И не надо "размазывать". Если на серверной стороне кроме базы данных есть более высокий слой, то пресловутая бизнессссс логика должна быть там. А в хранимых процедурах - специфические, внутренние для базы данных операции, которые не относятся к БЛ.   

Цитата

и тем самым "разваливает" все зависипые объекты, и все сессис из пула твердят что "состояние пакетов было сброшено"


Так если процедура работает неправильно и требует срочного исправления, все равно это наверное лучше, чем перезапускать базу данных. 

Это сообщение отредактировал(а) COVD - 17.12.2009, 16:52
PM MAIL   Вверх
mbasil
Дата 17.12.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Многое зависит от типа вашей системы. Это транзакционная (OLTP) система или система больше ориентированная на получение и просмотр информации (Dcision Support System). 
Я полагаю, что бизнес логика даже в случае OLTP поровну содержит запросы и DML предложения. Причем выполнение DML предложения проще (без учета сложности управления транзакциями), чем работа с разнообразными запросами, которые в том числе требуют и того или иного кэширования результатов на сервере приложений. Не забывайте, что если вы используете JPA, например с Hibernate, то контекст постоянства также является кэшем первого уровня. 

Таким образом (я полагаю), что при возрастании количества пользователей и достаточно сложной бизнес логике (даже в OLTP системе), нагрузка будет больше увеличиваться на стороне бизнес логики, чем на стороне базы данных. Особенно в том случае, если вы обеспечите грамотное кэширование информации на разных уровнях.

Однако даже если работа большей частью связана с обработкой SQL предложений, есть смысл выносить бизнес логику с уровня базы данных, хотя это и в какой то степени увеличит время обслуживания одного запроса.
 
Все узлы распределенного приложения должны (по возможности) иметь запас мощности. Когда один из узлов перегружен никакой запас мощности на других узлах не позволит обеспечить нужное качество обслуживания). Да, обычно сервер базы данных более мощный, чем остальные узлы. Но если вы его перегрузите и нет возможности его сделать мощнее (по затратам или в силу ограничений железа), вы столкнетесь с проблемой отсутствия гибкости приложения, с невозможностью продублировать бизнес логику на кластере серверов приложения.

Если представить запросы пользователей как некоторую суету внутри сети из узлов, то при правильно спроектированной сети суета должна уменьшаться с удалением от точки входа. А база данных стоит дальше всего. Ее основное назначение в системе - обеспечивать постоянство, а не суетиться на каждый чих пользователя.
PM MAIL   Вверх
DimW
Дата 18.12.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 3
Всего: 44



mbasil, спасибо, в принцыпе все понятно.
видимо мне просто все это еще предстоит переварить, но зная себя - пока не споткнусь не пойму(не поверю).
было бы проще если бы я на данный момент не имел опыта, был начинающим программистом, но блин мы в четыре рыла(+ 8-10 аналитиков по 1-2 человека на предметрую область) поддерживали систему(толстую) которая охватывала все предметные обрасти предприятия, была сложнейшая логика написанная на pl/sql, работа была организованна таким образом что это было делать просто. 
сейчас поддерживаем систему (веб) с одной предметной областью, гемороя огребаем по самые нехочу... наследие индусов...  smile 
невольно возникает вопрос, так в чем же проблема в архитектуре или в организации труда(подходе, отношении к своему делу)!?


по поводу этого - http://forum.vingrad.ru/index.php?showtopi...t&p=2049640 ничего сказать не хотите? не обязательно, но хотелось бы получить мнение человека который разрабатывал как на уровне БД так и на уровне приложения.
спасибо.
PM MAIL ICQ   Вверх
serger
Дата 18.12.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 2
Всего: 5



DimW, очень напоминает систему построения отчётов...


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
DimW
Дата 18.12.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 3
Всего: 44



Цитата(serger @  18.12.2009,  12:44 Найти цитируемый пост)
очень напоминает систему построения отчётов... 

система на оборот транзакционная, я показал один из модулей этой системы, а именно как эти самые модули я описываю на аппсерве и как осушествляется доступ(вызов) БЛ на стороне БД. 
роли аппсерва в этом случае отводится только доступ к данным и их представлению втом или ином виде пользователю(см. скрин), т.е. пользовательские теги отвечают за генерацию html, а доступ к БЛ в БД мапируется для конкретного урла. 
в данном случае ХП -  sys_pk_security.modify_application_unit доступна по урлу - "<%=request.getContextPath()%>/jdbf-admin.sys_pk_security.modify_application_unit.jdbf", который представлен ввиде экшена - /jdbf-admin.sys_pk_security.modify_application_unit.

Это сообщение отредактировал(а) DimW - 18.12.2009, 13:08
PM MAIL ICQ   Вверх
Vasay
Дата 18.12.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



DimW
Цитата(DimW @  17.12.2009,  16:14 Найти цитируемый пост)
1) MVC(в моем случае jsp)


А где MVC? (jsp не может быть - MVC, jsp предназначен для  "View")

Я вижу только что-то похожее на "View", в котором что-то делает 
Код

                            select id
                                  ,url
                                  ,note
                                  ,name
                              from sys_application_unit t
                             where (:p_name is null or upper(t.name) like upper(:p_name))
                               and (:p_url is null or upper(t.url) like upper(:p_url))
                            order by id desc


который должен быть в "Model", а не посреди тэгов отвечающих за рисование интерфейса. 

Это сообщение отредактировал(а) Vasay - 18.12.2009, 13:20


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
serger
Дата 18.12.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 2
Всего: 5



DimW, а в jsp условия, циклы как реализуются?


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
DimW
Дата 18.12.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 3
Всего: 44



Vasay, в данном случае jsp представлено как MV, не спорю что это криво, в ближайшее время планируется вынемти это недоразумение за пределы jsp, в свое оправдание могу объяснить это как издержки неопытности, в то время когда этот тег реализовывался smile 
будет примерно так:
Код

                   <jdbf:statement property="applicationUnit.stm">
                        <jdbf:query from="представление">
                             <field name="id"/>
                             <field name="url"/>
                             <field name="note"/>
                             <field name="name"/>
                        </jdbf:query>
                        <jdbf:parameter property="p_name" datatype="varchar" value="applicationUnit.name"/>
                        <jdbf:parameter property="p_url" datatype="varchar" value="applicationUnit.url"/>
                    </jdbf:statement>


Цитата(serger @  18.12.2009,  13:45 Найти цитируемый пост)
DimW, а в jsp условия, циклы как реализуются? 

serger, вы имеете ввиду как у меня это реализовано, если да, то ни как, т.е. каждый тег является закончинным компонентом который служит для конкретных целей, все операции по генерации html вынесены в обработчик пользовательского тега.
PM MAIL ICQ   Вверх
serger
Дата 18.12.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 2
Всего: 5



А динамические запросы как строятся, а видимость элементов HTML как контролируется?
В общем, всё равно не до конца понятно. Сомневаюсь, что сможете на пальцах раскрыть детали. Трудно воспринимается, так как ОЧЕНЬ уж все непривычно.  smile 
Думаю, такое сравнивать бесполезно - время покажет... 



--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
DimW
Дата 18.12.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 3
Всего: 44



Цитата(serger @  18.12.2009,  14:27 Найти цитируемый пост)
А динамические запросы как строятся

их попросту нет.

Цитата(serger @  18.12.2009,  14:27 Найти цитируемый пост)
а видимость элементов HTML как контролируется

путем выдачи определенных приверегий пользователю системы
к примеру кнопка:
Код

<jdbf:access name="aceessApplicationUnitAdd">
    <jdbf:button property="applicationUnit.add" image="?create?" title="Добавить" onclick="doAdd"/>
</jdbf:access>

если пользователю выдана привеления на объект доступа aceessApplicationUnitAdd то от ее увидет.

Цитата(serger @  18.12.2009,  14:27 Найти цитируемый пост)
Думаю, такое сравнивать бесполезно - время покажет...

надеюсь что я окажусь прав, как и вы. smile
PM MAIL ICQ   Вверх
Vasay
Дата 18.12.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



DimW


Может я просто не понял Вашу идею, но как-то мне не нравится :-(


Я бы сделал так:


(Снизу вверх, упрощенная версия )

классы сущностный (Entity) - pojo классы для представления данных из DB в программе.

классы доступа к данным (DAO) - в этих классах осуществляется вся работа с бд. Т.е. есть у Вас класс UnitDAO, у него есть методы:
getUnitList(.....) - возвращает список Unit , может иметь несколько реализаций (без параметров - весь список, с параметрами типа max и first)
getUnitById(long id)  
deliteUnitById(long id)
saveUnit(Unit unit)
.... и тд - вообщем все операции, которые Вам могут потребоваться.

Есть контроллер, конкретная реализация будет зависеть от фрэймворка и конкретной задачи.
Например, для стандартных CRUD операций можно сделать  UnitController c методами 
list() 
show()
edit()
delite()
create()
save() 

соответственно, определенный метод вызывается в соответствии с определенным URL (например, можно формировать url таким образом: http://site.com/unit/list?max=10&first=20 - мы просим вызвать метод list() UnitController-а и говорим - покажи 10 результатов начиная с 20-го)

UnitController запрашивает в UnitDAO метод getUnitList(10,20); получает список из 10 Unit-ов (в упрощенном варианте, в реальном приложении желательно иметь промежуточный класс) и скармливает его шаблонизатору (шаблонизатор - тот же jsp, velocity, freemarker....)


Это сообщение отредактировал(а) Vasay - 18.12.2009, 15:47


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0968 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.