Как реализовать туда-обратно из XML-схемы, используя Java с базой данных - PullRequest
3 голосов
/ 01 марта 2011

Каков наилучший способ реализации двустороннего приема для получения файлов XML и в конечном итоге сохранения данных в базе данных с использованием Java. В настоящее время у меня есть:
1. Схема XML и файлы данных XML отправляют мне
- XSD довольно сложный и принадлежит внешней стороне, поэтому я не могу его изменить
2. Созданы классы Java
- JAXB генерирует более 150 классов, к сожалению, схема может измениться
- Я использовал Maven POM для автоматизации процесса 3. Распакуйте файлы данных XML в объекты Java (с аннотацией JAXB) * ​​1006 * - данные будут отображаться пользователю для манипулирования
4. Сохранить объекты Java в СУБД (Oracle / MySQL)
- JDO кажется наиболее подходящим решением
5. Экспорт данных
- Данные могут быть снова экспортированы как XML или Excel (например)

Я не могу найти подходящий способ добавить метаданные JDO или аннотации в исходный код Java (сгенерированные во время процесса JAXB), чтобы обеспечить сохранение классов Java. Я работаю со следующими технологиями:
- Java, Maven, JAXB, JDO & JDBC

Я думаю, что DataNucleus будет наиболее подходящим, поскольку мне, возможно, придется часто менять хранилища данных (RDBMS / XML / Excel) между средами с разными местами экспорта. Единственные две технологии, которые мне, возможно, понадобится рассмотреть:
- Весна и XDoclet

Буду признателен за совет или указатель на учебник

Ответы [ 2 ]

1 голос
/ 01 марта 2011

Каков наилучший способ реализации туда и обратно для получения файлов XML и в конечном итоге сохраняя данные в база данных с использованием Java.

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

В настоящее время у меня есть:

1 - XML-схема и файлы данных XML отправляют мне

  • XSD довольно сложный и принадлежит внешней стороне, так что я могу не меняй это

Вариант № 1 - начать с XML-схемы

  • Если вы хотите начать с XML-схемы, вы можете использовать внешний файл привязки JAXB, чтобы настроить генерацию классов по мере необходимости без изменения сторонней XML-схемы.

Вариант № 2 - запуск с классов Java

2 - Созданы классы Java

  • JAXB генерирует более 150 классов, к сожалению, схема может измениться
  • Я использовал Maven POM для автоматизации процесса

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

Может оказаться полезным проект HyperJAXB , так как я считаю, что он будет генерировать аннотации JPA непосредственно для модели JAXB.

3 - разбирать данные XML файлы в объекты Java (с помощью JAXB аннотация)

  • данные будут отображаться пользователю для манипулирования

Это просто обычное использование JAXB. Для примера см .:

4 - Сохранить объекты Java в СУБД (Oracle / MySQL)

  • JDO кажется наиболее подходящим решением

JPA - другая альтернатива.

5 - экспорт данных

  • Данные могут быть снова экспортированы как XML или Excel (например)

Опять же, это нормальное использование JAXB для получения вывода XML.

0 голосов
/ 01 марта 2011

Хранение в базе данных экземпляров объектов Java, сгенерированных JAXB из развивающейся XML-схемы, не имеет большого смысла, ИМХО.Цель реляционной базы данных - хранить данные в четко определенной реляционной структуре, чтобы их можно было легко запрашивать.

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

Если действительно требуется структурированное хранение данных в базе данных, сначала спроектируйте схему базы данных, затем спроектируйте классы JDO, необходимые для сопоставления этой схемы базы данных, и реализуйте бизнес-логику, необходимую для преобразования ваших объектов JAXB в объекты JDO по порядку.хранить их в базе данных.

Но я бы подумал о том, какие функции вы хотите реализовать, прежде чем думать о технологиях, которые вы хотите использовать.

...