私は、XML ノードを JPA エンティティーに変換するタスクの前にいます。XML 内のオブジェクトは、エンティティによって表されるオブジェクトと似ていますが、まったく同じではありません。私の前に多くの変換コードがあるようです。
XML は Schema .xsd ファイルで定義されており、JAXB を使用してクラスを生成し、インスタンスを作成しています。上記の決定は、生成された型に触れないことです。それぞれのコンバーターを作成します。おそらくビジター パターンを使用しますが、まだわかりません。
私を悩ませているのは、誰かが .xsd ファイルを変更しようとして、責任のあるコンバーターを更新しないという状況です。
私の考えは、それらのコンバーター クラスが、コードで処理される適切な JAXB クラスからのフィールドの静的最終リストを維持するようにすることです。誰かが .xsd ファイルでそれらを変更した場合、一部のフィールドがまだ処理されていない、または一部の処理済みフィールドがもう存在しないという警告がログに記録されます。
さらに、コンバーターの数が JAXB 生成クラスの数と一致するようにしたいと考えています。どうやってするか?
おそらく、.xsd ファイルからどのクラスを生成できるかを実行時間で確認し、それらを登録済みのコンバーターと比較する必要があります。特定のパッケージ内のクラスをスキャンして JAXB 出力クラスを確認することはできないと感じています。
ビジターのパターンから何が問題なのかがわかるかもしれませんが、実際に XML-JPA 変換でエラーが発生するまでチェックを長引かせるのはおそらく得策ではありません。