JAXb, Hibernate и бобы - PullRequest
       1

JAXb, Hibernate и бобы

5 голосов
/ 26 октября 2011

В настоящее время я работаю над проектом с веб-службой Spring, hibernate и JAXb.

1) Я сгенерировал компоненты Hibernate с использованием IDE 'hibernate-кода, также

2),Я сгенерировал jaxb-бины с использованием компилятора maven.

..

Теперь мой вопрос:

1) Это правильный подход?(чтобы было так много бинов).

2) Должен ли я использовать бины JAXb для обработки на сервисном уровне?Как я могу сохранить слои отделенными?

3) Или мне нужно создать еще один набор bean-компонентов, т.е.сопоставить (бобы JAXb) с (новыми бобами) с (бобами гибернации)?

.

Скажите, пожалуйста, свое мнение?

Спасибо, ади

Ответы [ 2 ]

5 голосов
/ 26 октября 2011

Знаете, вы не можете полностью отделить все. Всегда будет слой, который будет знать два других слоя.

Обычно, когда я проектирую 3-х слойную архитектуру, например:

  1. Сервисный уровень - тот, который, вероятно, использует JAXB, предоставляет веб-сервисы или другие API
  2. Бизнес-уровень - любая реальная логика
  3. Persistence Layer - Hibernate

Я разрешаю бизнес-уровню знать об уровне обслуживания (JAXB) и о слое постоянства (бобах гибернации). Но я не позволяю служебному уровню и постоянному уровню знать друг о друге.

3 голосов
/ 26 октября 2011

Примечание: Я EclipseLink JAXB (MOXy) и являюсь членом JAXB 2 (JSR-222 ) экспертная группа. EclipseLink также обеспечивает отличную реализацию JPA (с открытым исходным кодом от TopLink ).

Есть расходы на обслуживание нескольких моделей. Каждая добавляемая вами модель представляет преобразование bean-to-bean, которое должно быть написано, протестировано и поддержано.

Другой подход заключается в использовании одних и тех же bean-компонентов для привязок JPA и JAXB. Для этого варианта использования будет легче начать с модели предметной области и добавить метаданные JAXB и JPA, чтобы применить сопоставления к XML и базе данных. Ниже приведен пример использования единой модели для создания веб-службы RESTful:

Поскольку EclipseLink предоставляет реализации как JAXB, так и JPA, мы предлагаем ряд расширений, чтобы упростить это:

<Ч />

UPDATE

В ответ на:

Согласитесь с тем, что вы говорите. Тем не менее, использование тех же бобов будет пара код очень тесно и будет сильно зависеть. Изменение в одном слой потребует изменений и в других местах. Что вы говорите?

Все зависит от того, как вы смотрите на вещи. Я предпочитаю создавать службы доступа к данным, чтобы спроектировать и построить надежную модель предметной области. Затем используйте JPA и JAXB для устранения несоответствий импеданса между объектно-реляционным и объектно-XML.

Один модельный подход

Использование одной модели для JPA и JAXB означает, что когда вы вносите изменения в модель, вам необходимо решить, как она будет обрабатываться для JPA и JAXB (это может быть хорошо или плохо). Если вы не хотите, чтобы каждое новое дополнение к модели влияло на отображение JAXB, вы можете использовать такие концепции JAXB, как @XmlAccessorType(XmlAccessType.NONE).

Подход двух (или более) моделей

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

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