Конвертировать XML в базу данных с помощью Java - PullRequest
5 голосов
/ 18 декабря 2011

Потребность: взять XML и сохранить данные в базе данных.

В настоящее время используется: JAXB для преобразования XML-схемы в классы Java.Затем я собираюсь использовать JPA для сохранения объектов, маршалируемых JAXB.

Проблема: я хочу что-то, чтобы преодолеть разрыв.После того, как JAXB сгенерирует классы Java, я должен вручную аннотировать все поля java.util.Date с помощью @Temporal;Я должен поставить @Entity на вершину каждого сгенерированного класса ... и т.д.

Я наткнулся на Hyperjaxb.Но я могу найти немного документации по нему, и не могу заставить его работать.

Я открыт для совершенно разных подходов.Кажется, что это будет распространенная проблема, поэтому, возможно, есть общее решение.

Ответы [ 3 ]

3 голосов
/ 18 декабря 2011

Примечание: Я EclipseLink JAXB (MOXy) , и член JAXB 2 (JSR-222) экспертная группа.

Если у вас уже есть схема базы данных, вы можете использовать инструмент Dali в Eclipse (часть проекта Web Tools) для генерации ваших сущностей JPA из базы данных:

JAXB - это конфигурация по исключению, это означает, что вам нужно добавлять аннотации только там, где вы хотите переопределить поведение по умолчанию. У Дали также есть инструменты, облегчающие добавление аннотаций JAXB:

Сущности JPA иногда используют двунаправленные отношения и составные ключи, их может быть сложно сопоставить с XML. EclipseLink JAXB (MOXy) содержит некоторые расширения, чтобы упростить эту задачу (обратите внимание, EclipseLink также предлагает реализацию JPA):

1 голос
/ 18 декабря 2011

Hyperjaxb делает именно то, что вы пытаетесь достичь.Вот документация:

Вот руководство, с которого можно начать:

0 голосов
/ 18 декабря 2011

Я могу предложить два варианта: Вариант 1. Определите типы объектов по отдельности, используя соответствующие аннотации JPA, сгенерируйте типы JAXB из схемы и во время выполнения сопоставьте один другому.Если это простое сопоставление, вы можете использовать Apache BeanUtils, чтобы просто скопировать атрибуты из одного компонента в другой, если это более сложное сопоставление, то вы можете использовать структуру, такую ​​как dozer

Вариант 2. Начните с типов сущностей, сгенерируйте схему из типов сущностей или вручную синхронизируйте типы сущностей и схему.Больше похоже на опцию, которую вы описали, за исключением того, что официальным источником является код Java, а не схема.

...