Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > проясните ситуацию, а то с ума можно сойти


Автор: AlexCorwin 29.3.2006, 16:19
Наверное всем уже надоели чайники, которые услышав много умных слов начинают доставать с вопросами, а что енто такое и зачем нужно smile

Перечитал наверное весь форум, но всё же остался ряд вопросов:
Итак Frameworks:
1. JSF и Struts и Tapestry - несут в себе один и тот же смысл. Т.е. создание интерфейсной части приложения ???

2. Hibernate - для работы с базами данных. он независим совсем от jdbc или является надстройкой ?

3. Spring - что это вообще за зверь ???? он тоже необходим для UI ???

Можно ли сращивать JSF (Struts) + Spring + Hibernate если да то в каких случаях это оправдано ???


Заранее спасибо, кто не поленится просветить...

Автор: tux 30.3.2006, 02:53
Попробую прояснить.

Цитата(AlexCorwin @ 29.3.2006, 21:19 Найти цитируемый пост)
1. JSF и Struts и Tapestry - несут в себе один и тот же смысл. Т.е. создание интерфейсной части приложения ???

Именно. Все три фреймворка предназначены для создания клиентской части веб-приложения и реализуют паттерн "модель-вид-контроллер" (MVC). Но, заметь, делают это по-разному, причем реализации сильно отличаются. Кроме того, это не единственные фреймворки. Вот здесь - http://java-source.net/open-source/web-frameworks - из 38 штук и подозреваю, что это еще не все.

Ты спросишь зачем они все нужны? Какие-то проекты - просто амбиции автора, решившего доказать, что и он может фрйемворк написать, кто-то действительно продвигает хорошую идею быстрого и удобного создания веб-приложений. Если ты только начинаешь заниматься разработкой для веб на Java, то тебе предстоит из всего разнообразия что-то выбирать. К этому вопросу мы еще вернемся.

Цитата(AlexCorwin @ 29.3.2006, 21:19 Найти цитируемый пост)
2. Hibernate - для работы с базами данных. он независим совсем от jdbc или является надстройкой ?

Hibernate - это библиотека объектно-реляционного отображения (ORM). Как ты уже наверное догадываешься, Hibernate - не единственная подобная библиотека. Вот здесь их перечисляется 21 - http://java-source.net/open-source/persistence. Для чего нужен Hibernate? Для того, чтобы можно было не работать с базой данных напрямую, выполняя множество запросов и обрабатывая результаты выполнения. Вместо этого можно сохранять в базу данных и получать оттуда обыкновенные объекты Java. Hibernate при сохранении объекта определяет соответствие классов таблицам в базе данных, атрибутов класса полям в таблице и генерирует запрос, который зависит от того какая операция выполняется - выборки объекта или его сохранения. Соответствие классов и таблиц, естественно, придется Хибернейту предварительно задать.

На самом деле, возможности Hibernate гораздо шире, но описать все что он умеет я здесь не смогу. Поскольку Hibernate с базами данных все-таки работает, то никак не зависеть от JDBC он ну ни как не может. Можешь считать его надстройкой. Еще одно достоинство Hibernate - он вполне неплохо сглаживает различия, существующие между различными СУБД, тоже аргумент для его использования. Думаю, ссылки на различные ресурсы по Hibernate ты и без меня в форуме найдешь, вот тебе пара ссылочек, где худо-бедно работа с Hibernate описана по-русски - http://msk.nestor.minsk.by/kg/2005/32/kg53209.html, http://www-128.ibm.com/developerworks/ru/java/library/j-hibernate/index.html.

Резюме такое. Если делаешь достаточно крупный проект (больше Hello, World smile), то использовать Hibernate оправдано. А можно использовать и другие ORM, но Hibernate похоже самый популярный.

Цитата(AlexCorwin @ 29.3.2006, 21:19 Найти цитируемый пост)
3. Spring - что это вообще за зверь ???? он тоже необходим для UI ???

В отличие от веб-фреймворков (Struts и иже с ним) Spring - это фреймворк приложения J2EE в целом, более того, Spring не обязательно должен использоваться в веб-приложении в отличие от Struts, который жестко привязан к веб. Опять-таки, Spring - не единственный, вот здесь похожих библиотек 8 - http://java-source.net/open-source/j2ee-frameworks. Но, Spring - это мейнстрим и замену ему сейчас можно наскрести разве что по сусекам из различных библиотек. Более того, Spring - это модно. smile Spring включает в себя огромный объекм кода, упрощающего работу с большинством технологий, использемых в J2EE - JDBC, JMS и т.д. Кроме того, Spring обладает собственным веб-фреймворком, гораздо более гибким чем, например, Struts. Однако, в нем не реализованы многие вещи, которые уже существуют в большом количестве - например, пулы соединений, ORM и т.д. Исключение сделано только для веб-фреймворка, видимо авторов не устраивала ни одна существующая реализация. smile На самом деле, причина в другом, но не буду в это здесь вдаваться.

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

Цитата(AlexCorwin @ 29.3.2006, 21:19 Найти цитируемый пост)
Можно ли сращивать JSF (Struts) + Spring + Hibernate если да то в каких случаях это оправдано ???

Можно. Если ты решишь использовать в приложении ORM, то придется сращивать Spring с Hibernate поскольку собственным ORM Spring не обладает. Использовать Struts при наличии мощного и гибкого фреймворка, имеющегося в Spring мне кажется целесообразным только при переносе на Spring уже существующего приложения, использующего Struts.

Ну вот, вкратце и все. smile

Автор: Skeleton 30.3.2006, 11:29
А JSF + Spring + Hibernate оправдано?

Автор: tux 30.3.2006, 11:33
С JSF не сталкивался, может быть и обладает он какими-то сказочными преимуществами в сравнении со Spring, но в это слабо верится.

Автор: Skeleton 30.3.2006, 11:45
Spring как-то с EJB соотносится? Что в будущем будет более востребованно JSF или Spring?

Автор: tux 30.3.2006, 12:07
Цитата(Skeleton @ 30.3.2006, 16:45 Найти цитируемый пост)
Spring как-то с EJB соотносится?

В Spring есть код, несколько упрощающий работу с EJB, а в остальном он никакого отношения к EJB не имеет.

Цитата(Skeleton @ 30.3.2006, 16:45 Найти цитируемый пост)
Что в будущем будет более востребованно JSF или Spring?

Это в общем-то разные вещи. JSF - только веб-фреймворк (насколько я знаю), а Spring - целый набор библиотек, упрощающий разработку приложений, включающий в том числе и веб-фреймворк. JSF продвигает Sun, этим может быть обусловлено будущая большая востребованность. Хотя, кажется, сейчас Spring быстрее набирает популярность.

Автор: AlexCorwin 30.3.2006, 14:57
tux
Спасибо огромное. кажется что-то начинает проясняться.
Я думаю попробовать поиграться для начала с jsf+hibernate. А то в Spring пока страшно лезть...

Можно пару примеров, для каких целей может использоваться Spring (не считая его UI модуля). Так сказать на рабоче крестьянском языке ???

Автор: ALKS 30.3.2006, 15:10
Я немножко хочу добавить по-воводу Hibernate. Он не просто самый поплярный он объективно лучший. я имел дело еще с torque и еще с чем-то и убежден что лучше Hibernate в своей нише ничего сейчас нету. Но это не значит что его нужно применять везде. Нужно понимать что абстрагирование от спицифики конкретного SQL сервера, как бы хорошо оно не было сделано, не может не сказываться на производительности.

Есть круг задач когда производительность запросов к БД очень важна и тут фреймворки подобные Hibernate применять не стоит. что-то выигрываеш а что-то проигрываеш как всегда...

А с фреймворками для вэб-приложений вообще полный атас... разобраться очень сложно, даже профисионалу. мы перепробовали несколько и в итоге... написали собственный... сэ ля ви...

Автор: Skeleton 30.3.2006, 16:03
На мой взгляд JSF в целом очень не плох, но имеет несколько существенных просчётов. Если я правильно понял форма в JSF может быть отправлена только методом POST и т.д....

Автор: tux 31.3.2006, 03:31
Цитата(ALKS @ 30.3.2006, 20:10 Найти цитируемый пост)
Я немножко хочу добавить по-воводу Hibernate. Он не просто самый поплярный он объективно лучший. я имел дело еще с torque и еще с чем-то и убежден что лучше Hibernate в своей нише ничего сейчас нету.

Согласен. Правда у меня тоже дело ограничилось знакомством с Torque и еще Castor. Люди шибко хвалят http://ibatis.apache.org/, но у меня его посмотреть пока только в планах.

Цитата(AlexCorwin @ 30.3.2006, 19:57 Найти цитируемый пост)
Можно пару примеров, для каких целей может использоваться Spring (не считая его UI модуля). Так сказать на рабоче крестьянском языке ???

Посмотри вот эту статью - http://www.javaportal.ru/java/articles/spring.html. Там как раз есть пара примеров использования. Будут вопросы, задавай.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)