データベースでJavaを使用してXMLスキーマからのラウンドトリップを実装する方法

datanucleus java jaxb jdo maven
データベースでJavaを使用してXMLスキーマからのラウンドトリップを実装する方法

XMLファイルを受信し、最終的にJavaを使用してデータをデータベースに永続化するためのラウンドトリップを実装する最良の方法は何ですか。 現在私が持っているもの:+ 1。 XMLスキーマとXMLデータファイルが送信されます+
– XSDはかなり複雑で、外部のパーティに属しているので、
変更しないでください+ 2。 Javaクラスを作成しました+
– JAXBは150を超えるクラスを生成しますが、残念ながらスキーマは変更される可能性があります+
– Maven POMを使用してプロセス3を自動化しました。 XMLの非整列化
データファイルをJavaオブジェクトに(JAXBアノテーション付き)+
– データはユーザーに表示され、操作されます+
4. JavaオブジェクトをRDBMS(Oracle / MySQL)に永続化+
– JDOが最適なソリューションであるようです+
5. データのエクスポート+
– データは、XMLまたはExcel(たとえば)として再度エクスポートできます。

Javaクラスを永続化できるように、JDOメタデータまたは注釈をJavaソースコード(JAXBプロセス中に生成)に追加する適切な方法が見つかりません。 私は次のテクノロジーを使用しています:+
– Java、Maven、JAXB、JDOおよびJDBC

DataNucleusは、エクスポート先が異なる環境間でデータストア(RDBMS / XML / Excel)を頻繁に変更する必要があるため、最も適していると思います。 私が考慮する必要があるかもしれない他の2つの技術は次のとおりです:+
– SpringとXDoclet

アドバイスやチュートリアルへのポインタをいただければ幸いです

  3  1


ベストアンサー

_
XMLファイルを受信し、最終的にJavaを使用してデータをデータベースに永続化するためのラウンドトリップを実装する最良の方法は何ですか。
_

このために、JAXBとJAXBの組み合わせを使用します。 注:私はhttp://www.eclipse.org/eclipselink/moxy.php[EclipseLink JAXB(MOXy)]をリードしています。http://www.eclipse.org/eclipselink [EclipseLink]は優れたhttp:// wwwも提供しています。 .eclipse.org / eclipselink / jpa.php [JPA実装]。

__
現在私は持っています:

1-XMLスキーマとXMLデータファイルが送信されます

  • XSDはかなり複雑で、外部のパーティに属しているので、
    それを変えない
    __

オプション#1-XMLスキーマから開始

  • XMLスキーマから開始する場合は、JAXBの外部を使用できます
    サードパーティのXMLスキーマを変更せずに、必要に応じてクラス生成をカスタマイズするバインディングファイル。

オプション#2-Javaクラスから開始

  • JPAエンティティから始めて、XMLにマッピングすることもできます
    スキーマ

  • MOXyは、これを行うことができるXPathベースのマッピング拡張機能を提供します
    より簡単なマッピング:http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html

__
2-Javaクラスを作成しました

  • JAXBは150を超えるクラスを生成しますが、残念ながらスキーマは変更できます

  • Maven POMを使用してプロセスを自動化しました
    __

XMLスキーマが変更された場合、いつでもモデルを再生成するか、必要に応じてモデルに注釈を付けてXMLスキーマの変更を処理できます。

HyperJAXBプロジェクトは、JAXBモデルに直接JPAアノテーションを生成すると信じているので、役に立つかもしれません。

__
3-XMLデータファイルをJavaオブジェクトに非整列化します(JAXBアノテーション付き)

  • データが操作されるようにユーザーに表示されます
    __

これは、通常のJAXBの使用法です。 例については、以下を参照してください。

__
4-JavaオブジェクトをRDBMSに永続化する(Oracle / MySQL)

  • JDOが最適なソリューションのようです
    __

JPAは別の選択肢です。

__
5-データのエクスポート

  • データは、XMLまたはExcel(たとえば)として再度エクスポートできます。
    __

この場合も、XML出力を取得するための通常のJAXBの使用法です。

1


進化するXMLスキーマからJAXBによって生成されたJavaオブジェクトのインスタンスをデータベースに保存することは、あまり意味がありません。 リレーショナルデータベースの目的は、データを適切に定義されたリレーショナル構造に格納して、簡単にクエリできるようにすることです。

必要なのは、少し前に受け取ったXMLドキュメントをそのまま返せるようにすることだけで、それをテーブルまたはファイルシステムにclobとして保存するだけです。

構造化された方法でデータベースにデータを保存することが本当に必要な場合は、まずデータベーススキーマを設計し、次にこのデータベーススキーマをマップするために必要なJDOクラスを設計し、JAXBオブジェクトをJDOオブジェクトに変換するために必要なビジネスロジックを実装しますそれらをデータベースに保存します。

しかし、使用したいテクノロジーを考える前に、どの機能を実装したいかについて考えます。

0


タイトルとURLをコピーしました