Конвертировать XML в базу данных с помощью Java

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

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

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

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

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

3 ответа

Решение

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

Вот учебник, с которого можно начать:

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

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

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

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

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

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

Другие вопросы по тегам