Примечание: Я 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, вам нужно добавить его в две модели и добавить необходимую логику преобразования. В этом случае необходимо сохранить связь между моделями.