Конвертировать 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, а не схема.