Использование POJO в качестве модели в проекте JSF и JPA, верно? - PullRequest
4 голосов
/ 05 сентября 2011

Я занимаюсь разработкой проекта с использованием JSF 2 и JPA 2 (EclipseLink 2.3). В JSF 2 я узнал, что мы должны отделить модель от контроллера и то же самое с представлением (спасибо BalusC). Но теперь с POJO, сгенерированным из JPA, мне интересно, если боб, модель, это теперь должны быть pojos.

На мой взгляд, будут мои .xhtml страницы, разработанные в JSF 2.0, которые будут взаимодействовать с моими контроллерами, затем в контроллерах вызывать классы DAO и затем работать в моей базе данных.

Это правильно? Я имею ввиду в концепции MVC? Я хочу сделать все правильно, любой совет?

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 05 сентября 2011

«MVC» имеет в JSF несколько точек зрения.С точки зрения высокого уровня, модель представлена ​​EJB / JPA и, в конечном итоге, DAO / DTO (если есть).Представление представлено вашим собственным кодом JSF (который состоит из управляемых bean-компонентов и шаблонов Facelets).Контроллер представлен как FacesServlet.

. Из низкоуровневого представления (еще одно подразделение высокоуровневого представления) Модель представлена ​​объектами или DTO.Представление представлено вашими шаблонами Facelets.Контроллер представлен вашим управляемым компонентом.По сути, это M (MVC) C.

Обратите внимание, что «POJO» - довольно унаследованный термин из старых времен J2EE / Hibernate.В настоящее время в Java EE / JPA они называются «сущностями».Да, это те @Entity Javabeans.Также обратите внимание, что некоторые могут решить использовать простые ванильные DTO вместо сущностей, которые должны отделить ваш код JSF от уровня обслуживания.JSF должен затем использовать эти DTO в качестве модели, а уровень обслуживания должен, в свою очередь, отображать между этими DTO и реальными объектами.Это на мой взгляд не обязательно.EJB3 / JPA2 - это довольно приятный API, который уже сводит к минимуму много стандартного кода, для которого вы бы использовали DAO / DTO, как в старые времена J2EE.В Java EE 6 и более поздних версиях нет необходимости переключаться, например, на уровень обслуживания.Все уже хорошо продумано и стандартизировано.

См. Также:

1 голос
/ 05 сентября 2011

Ну, на мой взгляд, это не правильно.Страницы XHTML - это представление, но контроллер - это сервлет JSF (уже предоставленный платформой), а то, что вы называете «контроллером», фактически является моделью (бизнес-логикой).JPA POJOS являются частью модели (модели данных).

В представлении вы должны вызывать бизнес-логику для получения результата (в виде JPA Pojos) и использовать их напрямую (преобразование в DTO не требуется в вашемархитектура) в представлении.

Внутри вашей модели вы можете организовать бизнес-логику по своему желанию (если вы считаете, что вам нужен уровень DAO, очень распространенный в отрасли, вы можете просто поместить его).

1 голос
/ 05 сентября 2011

Не совсем верно.Обычно лучше избегать ссылки на объекты модели непосредственно в представлении;Вы можете заменить их на DTO (объект передачи данных), который просто служит для хранения отображаемых данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...