2010-06-03 3 views
4

Что вы могли бы предложить как хороший и практичный, но простой шаблон для решения с:Простой, но хороший шаблон для EJB

  • HTML + JSP (как вид/презентации)
  • Servlets (контроллер, запрос , сеансы обработка)
  • EJB (настойчивость, BusinessLogic)
  • MySQL DB

И нужно использовать собственный слой DAO для в sistence? Я использую JPA для сохранения объектов в моей БД.

Должен ли я снимать бизнес-логику с моего EJB? Все онлайн-источники рассказывают мне разные вещи и меня смущают ...

ответ

5

Я бы определенно поставил бизнес-логику в разделе «Без состояния». Горизонтальные сеансовые сеансы хороши, так как они прекрасно захватывают границы транзакций. И он отделяет слой «Вид» от слоя сохранения.

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

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

Пребывание как можно дальше от состояния сеанса Бинс: они плохие новости и являются нарушенной концепцией в контексте веб-приложения.

Для долгого использования рассмотрите возможность использования Message Driven Beans, который вы запускаете, отправив сообщение JMS. Это хороший способ сделать фоновую обработку, которая быстрее освобождает бизнес-логику, сокращает транзакции и возвращает управление конечному пользователю быстрее.

+1

Ваше утверждение о SFSB слишком экстремально. Новичок должен быть осторожным с ними, и опытный пользователь, вероятно, должен использовать их в модерации, но IMHO они не * что-то, чтобы избежать любой ценой. Если вы используете IFF, вы, скорее всего, захотите предоставить им область CDI. –

5

Что вы могли бы предложить как хороший и практичный, но простой шаблон для решения с JSP/сервлеты + EJB + MySQL

Используйте фреймворка вашего выбора, Фасоль сессионный для бизнес-логики и управление транзакциями (предпочитают локальные интерфейсы, если вам не нужен удаленный доступ), Entities for persistence.

Внесите свои EJB везде, где это возможно (если вы используете Java EE 6, это означает где угодно, и вы также можете пропустить интерфейс).

И нужно ли использовать собственный слой DAO для настойчивости? Я использую JPA для сохранения объектов в моей БД.

Некоторые могут сказать «да», я говорю «нет» в большинстве случаев. EntityManager уже реализует шаблон Domain Store, нет необходимости защищать его за DAO для простых потребностей.

Вы можете прочитать следующие ресурсы для большего количества мнений по этому вопросу:

Должен ли я выйти бизнес-логика от моего EJB?

Я бы не стал. Поместите свою бизнес-логику в свои (безстоящие) сеансовые бобы. EJB3 являются POJO, они легко проверяются, нет необходимости делегировать бизнес-логику на другой уровень.

1

Anno 2012 Я бы не рекомендовал использовать Servlets и JSP в качестве слоя презентации. В 2002 году это было полным явлением, но это было десять лет назад.

Сегодня Java EE имеет отличную конструкцию фреймворка MVC под названием JSF. Вам гораздо лучше использовать это вместо этого. Скорее всего, вы захотите получить некоторые виджеты из библиотеки компонентов PrimeFaces, так как все стандартные являются немного базовыми. Также полезной является библиотека утилиты OmniFaces.

Относительно DAO; не заходите так далеко, как напрямую, используя менеджер объектов в JSF-бэнд-бэндах, но если вы уже используете классы обслуживания (границы транзакций) для своей бизнес-логики, использование DAO также может быть чрезмерным.

Есть еще некоторые небольшие преимущества DAO, такие как dao.findByName (...) выглядит немного яснее, чем загрузка именованного запроса, установка параметра и получение (одного) результата, но стоимость что вам необходимо поддерживать отдельный DAO для каждого объекта, возможно, в дополнение к некоторой службе.

+0

Не уверен, что это было в 2012 году, но JSF был гигантским куском вирусов в большинстве наших приложений. Большинство из того, что мы делали, - это отчеты данных, поэтому idk, используя ajax и тонны javascript, кажется, намного быстрее. –

+0

В 2012 году JSF был в порядке. В 2016 году с 2,3 за углом и OmniFaces это еще лучше. –