私は#2のファンです。
その理由は、JAXB アノテーション付きモデル オブジェクトは本質的に、トランスポート レベルで表現しようとしているビジネス/ドメイン ロジックのコントラクトであり、POJO は明らかにゲッター/セッターの検証を優れた制御を提供し、要素を制御できるからです。細かい粒度の名前と名前空間。
そうは言っても、トランスポート層をドメインオブジェクトから分離するために、POJO の追加の「内部」モデル (必要に応じて、問題の複雑さ/プロジェクトの範囲に応じて) を用意するのが好きです。また、ビジネス/ドメイン オブジェクト表現の内部で物事を変更する必要がある場合でも、トランスポート層に直接結び付けられていないという、温かい気持ちになります。同僚は、Bean を Bean にマッピングするためのツールであるDozerについて言及しましたが、これ以上コメントする直接的な経験はありません。
私は XSD からコードを生成するのが好きではありません。多くの場合、コードは醜いかまったく読めません。変更を管理しますが、微妙または取るに足らないものであっても、予期しない結果が生じる可能性があります。たぶん私はそれについて間違っているかもしれませんが、実証済みのモデルでの優れた単体テストが必要です。
これは、毛むくじゃらの XML-over-HTTP (REST とは呼びません) API を使用して顧客向け SDK を作成した私の個人的な経験に基づいています。JAXB/Jackson のアノテーション付き POJO により、比較的簡単に作業できました。それが役立つことを願っています。