EMF に慣れてきたので、頭の中にある概念が正しいかどうかを確認したいと思います。
Eclipse で EMF モデルを作成し、これを使用して Java コードを生成できることを理解しています。
モデルをディスクにシリアライズしてから再び戻すことができることはさらに理解していますが、これの使用法はわかりません。
モデルファイル自体はそのまま保存できるのでしょうか?シリアル化の明らかな使用例はありますか?
EMF に慣れてきたので、頭の中にある概念が正しいかどうかを確認したいと思います。
Eclipse で EMF モデルを作成し、これを使用して Java コードを生成できることを理解しています。
モデルをディスクにシリアライズしてから再び戻すことができることはさらに理解していますが、これの使用法はわかりません。
モデルファイル自体はそのまま保存できるのでしょうか?シリアル化の明らかな使用例はありますか?
ここでは、「メタモデル」と「モデル」という 2 つの用語を混同していると思います。
EMF モデルは実際にはメタモデルです。つまり、データを保持できるモデルの記述です。EMF モデル/メタ モデルは、さまざまな形式で表すことができます。EMF の場合、通常は.ecore/.genmodel
または.xcore
ファイルを使用します。
EMF モデル/メタモデルから、モデルとモデルに対する操作を表す Java コードを生成できます。理論的なレベルから見ると、EMF モデルと Java コードは同じ情報を表しているため、同等です。
生成された Java コードを使用して、モデル データを保持するオブジェクトをインスタンス化できます。これらのデータは、さまざまな形式でディスクに保存できます。EMF は、モデルのデータを XML でディスクにシリアライズして戻すために必要なコードを自動的に提供できます。(実際には、関連する生成コードはありません。すべて、クラス内のモデルの記述に基づいています...Factory
)。JSON やデータベース スキーマなど、他の形式を実装するのはかなり簡単です。
例:
EMF を使用して自転車のモデル (ホイール、ハンドルバー、フレーム、サドルなど) を記述したとします。EMF モデルから、オブジェクトとそれらの間の関係に関して同じバイクを記述できる Java クラスを生成できます。
Java クラスのオブジェクトを作成/構築して接続することにより、モデル内のさまざまな自転車をインスタンス化できるようになりました。
これらの自転車は、XML としてシリアル化して戻すことができるため、自転車をディスクに保存できます。
MDA (モデル駆動型アーキテクチャ) では、実際には 4 つのレベルのモデルについて話します。
.ecore
ファイルとクラスで見つけた情報は、...Package
M2 モデルを説明するように M3 モデルで表されます。後者は、MDA を教える私たちにとってのみ重要です... 通常の作業では、M0、M1、M2 だけを考える必要があります...
シリアライゼーションとは、モデル インスタンス (データ) のコンテンツを永続化することです。XML、JSON、データベースなどにシリアライズできます。