Начинаем новый небольшой WEB-проект:
десяток страниц; в основном поиск, создание, удаление (сложных) Hibernate-обьектов.
Посоветуйте "правильный" framework.
Пока потратил 1 день, бегло пробежался по:
Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%.
Struts: выглядит привлекательно
Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
Здравствуйте, Аноним, Вы писали:
А>Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%.
Spring хорошо разделен на модули и документирован. Поэтому изучать все не понадобится, только то чем нужно быдут пользоватся. Так что если ищете "правильный", то это самое оно.
А>Struts: выглядит привлекательно
Прошлый век.
А>Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
Граблей как и везде не больше не меньше. Подойдет если вы будете делать много UI и писать reusbale компоненты. Плюсов очень и очень много.
Основной минус — отсутствие нормально интеграции сo Spring. Но есть варианты, например инжектить спринговые бины через аннотации.
А>Может кто добавит в двух словах?
Надо ещё обратить внимание что Spring не поможет с окончательным представлением, поэтому тут тоже придется поискать решение (если не Tapestry)
Комбинации которые мы применяем это:
Tapestry + Spring IoC и там стоко всего полезного не перечислить.
Spring MVC + Velocity если UI не так много, я чаще склоняюсь именно к этой комбинации, Возьня с Tapestry мне не понравилась и сложностей которые пришлось забарывать оказалось больше чем хотелось. Но говорят последние версии прогрессируют как раз в сторону решения этой проблемы.
Здравствуйте, Аноним, Вы писали:
А>Может кто добавит в двух словах?
для текущего проекта, который больше имеет в недрах, чем в GUI и в БД (10-15 страниц, 10-15 таблиц), я выбрал wicket + hibernate (с простой proxy-прослойкой, облегчающей transaction handling)
компонентность помогла для удобного вывода "чуть-чуть отличающихся сущностей", а также для ввода сущностей с настраиваемым набором параметров
поддержка вывода постраничного браузинга сущностей помогла избежать сложных собственных решений, чему был рад заказчик (владеет исходным кодом)
Здравствуйте, Аноним, Вы писали:
А>Hi ALL
А>Начинаем новый небольшой WEB-проект: А>десяток страниц; в основном поиск, создание, удаление (сложных) Hibernate-обьектов.
А>Посоветуйте "правильный" framework.
А>Пока потратил 1 день, бегло пробежался по: А>Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%. А>Struts: выглядит привлекательно А>Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
А>Может кто добавит в двух словах?
RI>JSF + AJAX + Spring + Hibernate
И как скрещивать AJAX и JSF?
"СССР — четыре слова и все лживые" — Вагрич Бахчанян
Re[2]: Новый WEB-проект
От:
Аноним
Дата:
20.11.06 18:21
Оценка:
Здравствуйте, C0s, Вы писали:
C0s>для текущего проекта, который больше имеет в недрах, чем в GUI и в БД (10-15 страниц, 10-15 таблиц), я выбрал wicket + hibernate (с простой proxy-прослойкой, облегчающей transaction handling) C0s>компонентность помогла для удобного вывода "чуть-чуть отличающихся сущностей", а также для ввода сущностей с настраиваемым набором параметров C0s>поддержка вывода постраничного браузинга сущностей помогла избежать сложных собственных решений, чему был рад заказчик (владеет исходным кодом)
А есть в wicket аналог BeanForm? А то разных типов обьектов предвидится с пару десятков.
Здравствуйте, Аноним, Вы писали:
А>А есть в wicket аналог BeanForm? А то разных типов обьектов предвидится с пару десятков.
если бы я еще в точности понимал в чем есть фикус BeanForm...
вкратце, в wicket любая форма имеет html-ку, в которой, собственно, дана разметка, в которой каждому элементу дано wicket-id
java-класс этой формы имеет конструктор, в коде которого инстанцируются все элементы, и привязывается модель (java-bean)
так вот в простейшем случае предполагается совпадение имен свойств этого java-бина со значениями wicket-id input-контролов в htmlке.
при этом геттеры и сеттеры могут быть сразу типизированы (String, Integer ...), а для "сложных" контролов типа DropDown легко реализуется отделение значений от индексов вариантов (и значения, как следствие, тоже не обязательно имеют тип String)
впридачу, на все это легко навешиваются валидаторы (как по отдельным полям, так и на уровне формы)
в том же java-классе также реализуется метод onSubmit, который при успешном сабмите формы делает также редирект на нужную страницу, и все
Здравствуйте, Аноним, Вы писали:
А>Hi ALL
А>Начинаем новый небольшой WEB-проект: А>десяток страниц; в основном поиск, создание, удаление (сложных) Hibernate-обьектов.
А>Посоветуйте "правильный" framework.
А>Пока потратил 1 день, бегло пробежался по: А>Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%. А>Struts: выглядит привлекательно А>Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
А>Может кто добавит в двух словах?
Здравствуйте, C0s, Вы писали:
C0s>Здравствуйте, Аноним, Вы писали:
А>>Может кто добавит в двух словах?
C0s>я выбрал wicket + hibernate (с простой proxy-прослойкой, облегчающей transaction handling)
Гы. Я тоже proxy для управления транзакциями написал, после чего остался доволен вышеозначенно связкой.
Re[2]: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 08:20
Оценка:
Здравствуйте, C0s, Вы писали:
с простой proxy-прослойкой, облегчающей transaction handling
можно поподробней про proxy-прослойку, как это работает ?, если можно пример
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, C0s, Вы писали:
А>с простой proxy-прослойкой, облегчающей transaction handling
А>можно поподробней про proxy-прослойку, как это работает ?, если можно пример
Spring умеет автоматически управлять транзакциями. Но использовать Spring только лишь ради этого — это стрелять из пушки по воробьям. Проблема решается просто. Мое решение уложилось в 6 классов.
Предположим, у нас есть некий класс содержащий набор методов, реализующих бизнес-правила. Подавляющее большинство таких правил делают запросы к базе данных, изменения в БД должны быть либо целиком приняты, либо целиком отвергнуты.
Самостоятельно управлять транзакциями — стрёмно. Да и ненадёжно. Забыл где транзакцию закоммитить — ищи потом... Было бы разумно, если бы приложение само стартовало и завершало транзакцию, если мы укажем потребность в этом. Например — через аннотацию:
public class DaoImpl implements Dao {
...
@Transactional
public void processOperation();
...
}
Вопрос: как научить систему управлять транзакциями? Для этого надо разобраться с классом Proxy и интерфейсом InvocationHandler из состава JDK. Данная парочка умеет производить на свет классы на базе существующих, с тем же самым интерфейсом, но с измененной реализацией. Выглядит процесс перерождения примерно так:
dao = (Dao) new DaoProxy(new DaoImpl(sessionFactory)).getProxy();
Здесь класс DaoImpl — класс с бизнес-методами, реализующий интерфейс Dao. На выходе мы получили класс с тем же самым интерфейсом, но вот что происходит внутри DaoProxy?
public class DaoProxy implements InvocationHandler {
private Object daoProxy;
...
public DaoProxy(Dao dao) {
try {
Class proxyClass = Proxy.getProxyClass(dao.getClass().getClassLoader(), dao.getClass().getInterfaces());
daoProxy = proxyClass.getConstructor(new Class[]{InvocationHandler.class}).newInstance(new Object[]{this});
} catch (Exception e) {
throw new DaoException(e);
}
}
public Object getProxy() {
return daoProxy;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result;
result = transactionManager.process(method, args);
return result;
}
}
У прокси-класса каждый вызов метода будет пропускаться через метод invoke(), и соответственно, через transactionManager.process(), который внутри выглядит примерно так:
Кстати, если вам надо ограничить доступ к бизнес-методам или страницам, можно применить тот же самый трюк.
Re: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 10:46
Оценка:
А>Может кто добавит в двух словах?
а может ну его, хибернейт этот со спрингом? Данные в базе, взять/положить, получить хмл, по хсл шаблону преобразовать и отдать браузеру? По-моему ничего сложного
Здравствуйте, Аноним, Вы писали:
А>а может ну его, хибернейт этот со спрингом? Данные в базе, взять/положить, получить хмл, по хсл шаблону преобразовать и отдать браузеру? По-моему ничего сложного
так может XML-XSLT тогда то же нафиг? Делов-то для пары десятков бинов CRUD запросы наколбасить и в JSP связать с формами!
Здравствуйте, Blazkowicz, Вы писали:
А>>а может ну его, хибернейт этот со спрингом? Данные в базе, взять/положить, получить хмл, по хсл шаблону преобразовать и отдать браузеру? По-моему ничего сложного
B>так может XML-XSLT тогда то же нафиг? Делов-то для пары десятков бинов CRUD запросы наколбасить и в JSP связать с формами!
Фи. HTML + MS IE + MS databinding + JScript = крутой ВЕБ-проект. Работы по сопровождению хватит на всех
Здравствуйте, toxin, Вы писали:
B>>так может XML-XSLT тогда то же нафиг? Делов-то для пары десятков бинов CRUD запросы наколбасить и в JSP связать с формами!
T>Фи. HTML + MS IE + MS databinding + JScript = крутой ВЕБ-проект. Работы по сопровождению хватит на всех
Но это уже оффтопик будет.
Re[4]: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 11:24
Оценка:
Здравствуйте, slskor, Вы писали:
S>
S>public class DaoImpl implements Dao {
S> ...
S> @Transactional
S> public void processOperation();
S> ...
S>}
S>
S>У прокси-класса каждый вызов метода будет пропускаться через метод invoke(), и соответственно, через transactionManager.process(), который внутри выглядит примерно так:
S>
да это понятно ,больше интересовала поддержка рапределенных транзакций.
тоесть когда в транзакции участвуют несколько методов, разных объектов (есть самописные ресурсы),
границы транзакции указаны в коде.
скажем class A implements XAResource {
private String a;
.......
.......
public setA(String a) {
......
}
......
......
}
A a1 = new A(TransactionManager mnr);
A a2 = new A(TransactionManager mnr);
Здравствуйте, Blazkowicz, Вы писали:
T>>Фи. HTML + MS IE + MS databinding + JScript = крутой ВЕБ-проект. Работы по сопровождению хватит на всех
B>Но это уже оффтопик будет.
Зато в топик будет: "как все это хозяйство портировать на J2EE, т.к. заказчик ничего кроме Линухов и Оракла не признает"
Здравствуйте, toxin, Вы писали:
T>Здравствуйте, Blazkowicz, Вы писали:
T>>>Фи. HTML + MS IE + MS databinding + JScript = крутой ВЕБ-проект. Работы по сопровождению хватит на всех
B>>Но это уже оффтопик будет.
T>Зато в топик будет: "как все это хозяйство портировать на J2EE, т.к. заказчик ничего кроме Линухов и Оракла не признает"