EMFに関するいくつかの チュートリアルを読みましたが、なぜEMFを使用する必要があるのか疑問に思っています。
今までは、POJO を XSD スキーマ + JXCから、または手動で生成していました。
私が EMF を理解している限り、クラス間の複雑な関係 (1 対多など) を定義すると便利です。しかし、それだけですか?EMF でコードを生成するのはもっと複雑ではありませんか? いくつかの余分な依存関係を追加しませんか?
EMFに関するいくつかの チュートリアルを読みましたが、なぜEMFを使用する必要があるのか疑問に思っています。
今までは、POJO を XSD スキーマ + JXCから、または手動で生成していました。
私が EMF を理解している限り、クラス間の複雑な関係 (1 対多など) を定義すると便利です。しかし、それだけですか?EMF でコードを生成するのはもっと複雑ではありませんか? いくつかの余分な依存関係を追加しませんか?
一般的に言えば、emf を使用すると、実行時にいくつかの利点が得られると言えます。
最初の段階で、ecore クラス (および emf ランタイム) がアプリケーションの POJO から必要なものを提供することに気付くでしょう。プレーンな POJO を使用する場合は手作業で多くのコーディングが必要になるのに対し、多くの領域でそれ以上のコーディングは必要ありません。
EMF の拡張機能は、さらに多くの機能を提供します。
実際、EMF/Ecore は POJO の標準を提供し、従来のアプローチで手動でコーディングするものを実際に提供するエコシステム全体がその周りに成長したと主張することができます。
正直なところ、EMF の欠点は、Ecore ランタイムに縛られることです。これは、Eclipse ベースのリッチ クライアントをコーディングする場合は問題ありませんが、サーバー上にいる場合は問題になる可能性があります。
あなたの唯一の関心が POJO の生成である場合、EMF でできることと同じことを達成するための多くの代替手段があることに同意します。
ただし、Java 生成は EMF の最初のアプリケーションにすぎません。現在、EMF モデルを操作 (クエリ、検証、変換など) するための多くの機能を無料で提供する、膨大な数の EMF ベースの Eclipse プラグインがあります。
EMF に関する公式の Eclipse プロジェクトのリストについては、 Eclipse Modeling Projectを参照してください。
また、Acceleoを見て、EMF モデル (Java、PHP など) からのテンプレートベースの生成アプローチの柔軟性を確認してください。
Jordi が言ったことに加えて、EMF は、たとえば XML Beans とは異なり、モデルの変更にリスナーを追加できる通知メカニズムを提供します。したがって、モデルで変更が発生すると、この変更について通知されます。
EMF クエリを使用して、SQL に似た構文と OCL を使用してモデルを検索することに成功しました。EMF Validation は、スキーマで定義されているものに基づいてモデルを検証し、スキーマで表現できない場合に独自の検証ロジックを導入するための優れたフレームワークです。