2015-02-13 9 views
1

У нас есть веб-приложение, которое использует JSP, Servlet и Hibernate. Образец дизайна, который мы получили, это MVC, что означает, что означает,Вы пишете код Hibernate внутри POJO?

JSP -> Servlet -> Beans (POJO) 

Теперь вопрос. После того, как разработчики внедрили запросы на спящий режим, создание сеанса спящего режима и т. Д. Внутри POJO. Теперь внутри этих POJO существуют такие методы, как getAllEmployees(), getAllAgents() и т. Д. Это очень усложнило нам изменить таблицы базы данных (мы обрабатываем базу данных вручную, используя MySQL Workbench) и используем автоматические инструменты для повторного создания POJO, поскольку эти методы будут потерял.

Теперь есть 2 аргумента. Один из них заключается в том, что это сохранение запросов на спящий режим, сеансы внутри POJO - хорошая работа, потому что это похоже на чистый MVC. Другой аргумент - переместить код гибернатора в Servlets и вызвать POJO точно так же, как beans, только для установки и получения значений.

Мы еще не работали в Hibernate. Сверху 2, что является предпочтительным местом для написания кода hibermnate, когда дело доходит до спящего режима?

Наконец, обратите внимание, мы не заинтересованы в Спринг или других структур, мы используем чисто JSP и сервлетов с Hibernate

+3

, что о DAO шаблон проектирования? – vincent

+0

Да. Без использования Spring или какой-либо другой инфраструктуры POJO вам будет сложно реализовать правильные шаблоны проектирования DAO-DTO, которые справедливо упоминает @vincent. – Richard

+1

По моему опыту, то, что я видел и делал, имеет отдельные сущности (POJO). Это просто представление таблицы, связанной с ней. Затем записывается отдельный класс «службы», который выполняет все CRUD на объектах. Таким образом, у вас будет 'List agentList = service.fetchAllAgents();' и код Hibernate будет находиться в 'fetchAllAgents()'. Или 'Агент newAgent = service.saveAgent (...);'. Я уверен, что другие могут справиться с этим по-другому, но именно так все компании, над которыми я работал, сделали это. – Ascalonian

ответ

1

Возможно, что вам нужно, это еще один слой абстракции. Поскольку ваш POJOs воссоздан после новых миграций, вы не должны вставить код в нем (я не согласен с этим ПОДХОДОМ, но это только мое мнение :-))

JSP -> Servlet -> NewLayer -> POJO

Я не знаю, где вы ставите свои бизнес-правила, но в этом случае он будет находиться в «NewLayer», который будет состоять из «hibrid» слоя service и dao.

Я рекомендовал бы эти показания, чтобы пересмотреть свою фактическую архитектуру:

https://softwareengineering.stackexchange.com/questions/220909/service-layer-vs-dao-why-both

Responsibilities and use of Service and DAO Layers

Смежные вопросы