2013-11-29 2 views
1

Я планирую создать веб-приложение с помощью Java Server Faces, но я не уверен, как справляться с сохранением моих объектов. Для проектов php я использую структуру Symfony с Doctrine 2. Я вызываю метод persist менеджера сущности главным образом в контроллерах. Таким образом, для бизнес-логики нет отдельных классов. Я попробовал Hibernate, и я думаю, что это хорошая замена для Doctrine. ;)Сохранение данных в Java Server Faces с Hibernate/JPA

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

Я прочитал статьи и учебные пособия об объекте доступа к данным и шаблоне хранилища (http://docs.spring.io/spring-data/jpa/docs/1.3.0.RELEASE/reference/html/jpa.repositories.html).

В шаблоне объекта доступа к данным у меня есть класс для моего объекта, а также интерфейс и класс для моего объекта/объекта DAO, в шаблоне репозитория у меня есть класс для моего объекта и класса для repisitory.

Но куда идет моя бизнес-логика? Должен ли я писать интерфейс и класс для каждого объекта для уровня бизнес-логики, а внутри классов я просто вызываю методы dao/repository? Если да, то в чем разница между обоими образцами?

Если я совершенно неправ: что такое (отраслевой) стандарт для сохранения данных (с Hibernate/JPA) с Java Server Faces?

ответ

2

Архитектура проекта должен быть хорошо организован в соответствии с принципом «низкое сцеплением и высокой когезией»

Системы слои должны быть хорошо разделенными. Базовая архитектура имеет 3 слоя.

  1. Презентационный уровень: управляемые бобы JSF находятся в этом слое. Задача этого уровня - соответствовать действиям пользователя, хранить пользовательские данные и показывать данные пользователю. В принципе, его ответственность ограничена шаблоном MVC независимо от используемой вами реализации (JSF, Spring MVC или Struts)
  2. Bussimess Logic Tier: данные и действия, которые были собраны со страницы, были отправлены на этот уровень для работы с данными. Вы не должны манипулировать данными и готовить ответ внутри уровня презентации. Ответственность за Bussiness Logic Tier. (Spring, CDI)
  3. Уровень интеграции: доступ к базам данных должен выполняться на этом уровне независимо от используемой библиотечной технологии (Hibernate, JPA, JDBC).

enter image description here

Как вы можете видеть на рис. управляемые вами JSF-бобы должны быть способны только на запросы от страниц (контроллера) и данных страницы (модели). Вы можете посмотреть на this answer, чтобы понять JSF MVC. Поэтому лучше не подключать БД внутри управляемых фанов JSF. Это не очень хорошая практика.

Вторая часть вашего вопроса. Все технологии, Hibernate, JPA, Spring JDBC, используют JDBC-драйвер соответствующей БД. Драйверы JDBC - это единственное, что связано с БД. Тем не менее, beter должен выбрать способ подключения к DB, Hibernate, JPA или Spring JDBC.

Вы можете скачать my example application, который реализует эту архитектуру в основном.

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