![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Всем привет. Подскажите пожалуйста какую роль играет EJB ? Для чего эта технология предназначена ?
И в какой связке чаще всего используют их ? Спасибо! |
|||
|
||||
Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 1 Всего: 10 |
Гуглили?
На каком уровне стало непонятно? Я к тому что ответ на подобный вопрос может получится как в анекдоте: -- Папа, а почему, когда яблоко откусишь, оно делается коричневым? -- Дело в том, сынок, что в яблоке имеются различные химические вещества. Одно из них -- железо. Так вот, когда железо вступает с кислородом, находящимся в воздухе, в химическую реакцию, получается окисление. В результате образуется вещество, которое и окрашивает яблоко в коричневый цвет. -- Папа, а с кем ты сейчас разговаривал? Конкретизируйте и свой опыт программирования и сам вопрос по EJB |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Опыт в java уже более 5 лет. Знаком с spring, hibernate, jsf, servet, jsp, jdbc.
гуглил ) прочитал пару статей ... так как у меня не получается читать на английском, сам не смог до конца понять роль EJB. Попробую уточнить вопрос. Вот есть например проекты где используется spring, struts и hibernate. Тут hibernate берет на себя работу с БД, spring управление транзакциями и управление коннектом. Struts в свою очередь обрабатывает action и отдает какой то ответ пользователю. Вот хотелось бы примерно в таком виде услышать ответ по EJB =) Например используется в такой то свзяке, где выполняет такие то действия и отвечает за это. Если не правильно что то понимаю, поправьте пожалуйста. P.S. Видел статью где описывали взаимодействие jsp - servlet - ejb - jdbc. Какая тут архитектура, зачем тут прослойка из ejb ? почему сервлет не может работать напрямую с БД через jdbc ? |
|||
|
||||
ecologist |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 452 Регистрация: 28.2.2007 Репутация: 5 Всего: 9 |
EJB - это в какой-то степени Spring с возможностью Dependency Injection, с возможностью управления транзакциями, с возможностью интерсепторов.
|
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
EJB - спецификация, определяющая стандарт для серверных приложений. На практике оказалось, что она избыточна во многих случаях, слишком сложна и громоздка. Появились и стали популярны как альтернатива EJB упрощенные технологии для конкретных нужд - spring для инициализации, hibernate для маппинга. Но они тоже стали превращаться в монстров, расширяя круг решаемых ими задач. В свою очередь, эта конкуренция способствовала совершенствованию EJB.
|
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Тогда в каких случаях лучше применить ejb, а в каких spring + hibernate ?
В ejb разве есть маппинг сущностей на базу ? (как в хибернейте) |
|||
|
||||
troglodit42 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.1.2012 Репутация: нет Всего: нет |
EJB состоит из трех частей
Session Beans - предназначены для инкапсуляции логики. Есть Dependency Injection. Есть шедулер задач. Есть управление транзакциями. Есть контейнерный ConcurrencyManagement для Singleton. Но самое на мой взгляд главное - это Remoting. Т.е. несколько компонетов могут находиться на совершенно разных физических машинах. И все выше перечисленные ососбенности, в том числе и транзакции будут также прозрачно работать, как если бы все были на одном сервере. Сам использую Сессионные бины в связке с JSF.В них у меня лежит бизнес-логика и коммуникации между модулями. JSF бины только для уровня презентации Entity Beans - еще эта технология называется JPA. Примерно тоже самое что Hibernate. (Вернее JPA выросла под влиянием Hibernate). javax.persistence аннотации и прочее. ManagedDriven Beans - JMS. Система асинхронной рассылки сообщении по стратегиям: от пункта к пункту и издатель-подписчик (http://ru.wikipedia.org/wiki/Java_Message_Service). Удобно для гетерогенных систем, когда нет возможности иметь общий интерфейс взаимодействия (если этот интерфейс есть, то имхо удобнее Session EJB) Сам активно пользовался первыми двумя. Получалась такая прослойка: JSF - GUI Session EJB - Local - бизнес-логика, управление данными, Remote - для коммуникации между шардами. Entity EJB - работа с БД. Также есть возможность написания "JEE Клиента". Это десктоп приложение, которое может распространятся через Java Web Start. Данное приложение может работать напрямую с удаленными EJB компонентами сервера. Вызывая методы удаленных интерфейсов. Это сообщение отредактировал(а) troglodit42 - 3.2.2012, 12:57 |
|||
|
||||
Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 1 Всего: 10 |
hibernate для ejb не помеха.
так же и как для spring - это отдельная вещь поэтому вопрос нужно бы так ставить: Тогда в каких случаях лучше применить ejb + hibernate, а в каких spring + hibernate ? Кроме хибера и там и там применяются другие JPA фреймворки. Или парсеро-мапперы типа myBatis Далее, spring стал популярен ввиду неудобств ejb 2.x После выхода ejb 3.x нередко можно услышать мнение что spring не нужен, не имеет преимуществ. Поэтому ответ на "а в каких случаях" считайте что в любых случаях где уместен spring будет уместен и ejb и наоборот. Выбирают же по разнообразным "политическим" причинам, не связанными напрямую с техническими преимуществами/недостатками этих подходов (ejb НЕ фреймворк, а спецификация, которую реализуют некоторые сервера приложений. Референсная реализована в GlassFish. А также обычно с отставанием в JBoss и Apache Geromino - а на Geromino основан IBM WebSphere) Если же сервер приложения в проекте не требуется, а достаточно jsp - spring mvc - jdbc(JPA, ...) то пожалуй и EJB ни к чему для такого проекта Это сообщение отредактировал(а) Skynin - 3.2.2012, 12:39 |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Спасибо за ответы )
Заинтересовал JSF + EJB + Entity EJB ... То есть JSF бины "дергают" Session EJB бины, в свою очередь Session EJB бины используют Entity EJB для доступа к БД. Можете немного подробнее рассказать про Local и про Remote ? Ммм Remoting это не что то вроде Web сервиса ? |
|||
|
||||
troglodit42 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.1.2012 Репутация: нет Всего: нет |
||||
|
||||
Vasay |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
troglodit42
JPA это совсем не тоже самое, что Hibernate. Это библиотека дающая стандартные методы для общения с разными ORM, такими как Hibernate, TopLink, EclipseLink... Сама по себе она работать не может, ей нужен ORM. В идеале, при использовании JPA замена одного ORM на другой - вопрос одной строчки в конфиг файле. Entity Beans - это не технология. Так называют классы предназначенные для отображения неких сущностей. JPA вполне может использоваться отдельно не только от EJB но и от JavaEE - в SE проектах. 4epT
Очень грубо и поверхностно: Вы можете создать некий EJB для выполнения определенных задач. Задеплоить его на Java Applicateon Server. И из других приложений обращаться к его интерфейсам. Причем, эти приложения могут находиться на том же сервере, на другом сервере, или вообще быть JavaSE приложениями. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
||||
|
|||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
А можно немного разъяснить насчет JPA ? Hibernate это просто реализация JPA (если я правильно понимаю). Вчера из нет бинса создавал EJB Entity Beans, а затем при помощи EntityManager делал запросы в БД (не написав не одной строчки на SQL) ...
Пример:
В данном случае какая реализация JPA используется ? или это можно только в конфиге глянуть ? |
|||
|
||||
Vasay |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
Нет. Hibernate поддерживает работу с JPA.... Грубо говоря - Hibernate - это телевизор. JPA - это универсальный пульт от телевизора, который может работать как с телевизорами марки Hibernate так и с другими телевизорами ![]()
Какой ORM используется можно глянуть в конфиге ( persistence.xml ). Если память не изменяет по умолчанию NetBeans использует EclipseLink Это сообщение отредактировал(а) Vasay - 4.2.2012, 02:03 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Дело в том что у меня нету файла persistence.xml =)
И такой вопрос ... JPA можно использовать без всяких ORM ? или JPA это как интерфейс ? =) |
|||
|
||||
Skynin |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 1 Всего: 10 |
JPA как и EJB - это НЕ фреймворк а спецификация. Причем спецификация как раз для ORM фреймворков. По другому: JPA никак не возможно использовать без ORM, потому что это описание одного из способов как должна быть устроена работа ORM.
Так его ни у кого вначале нет. Как нет ни строчки кода.
Не совсем так. Идеи которые авторы Hibernate принесли в Java сообщество так понравились, что их решили стандартизиривовать. Причем, вначале, до JPA уже были попытки - JDO. Вобщем советую вам погуглить. А то придется сюда копипастить много, начиная с соответствующих разделов в википедии.
Неизвестно. Какую в проект включите - такая и будет. Это сообщение отредактировал(а) Skynin - 4.2.2012, 15:53 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |