EMF モデル インスタンスをシリアル化する最良の方法は何ですか?
-
20-08-2019 - |
質問
メモリに設定された EMF モデルのインスタンスを含む Eclipse RCP アプリケーションがあります。外部システムがアクセスできるようにそのモデルを保存する最良の方法は何ですか?実行中および実行後にアクセスが発生する可能性があります。
モデルの読み取りと書き込みは非常にバランスが取れており、1 秒間に数回発生する可能性があります。
Hibernate + Teneo + EMF を使用してデータベースを設定すればうまく機能すると思いますが、他にどのようなオプションがあるのか知りたいです。
解決
私は CDO (Connected Data Objects) を EMF と組み合わせて使用して、同様のことを行っています。Eclipse wiki の例を使用すれば、実行するのにそれほど時間はかかりません。いくつかの注意点:
頻繁に変更されるデータの場合は、永続化のために非監査モードを使用することをお勧めします。それ以外の場合は、コミットごとに EObject の新しいバージョンを保存し、古いバージョンも保持することになります。
更新を公開する必要がある頻度に応じて、データが変更されるたびにコミットすることも、より少ない間隔でコミットすることも選択できます。
必要に応じて、かなり柔軟なロック オプションも利用できます。
私のアプリケーションは永続化のために Derby を使用していますが、近いうちに SQL Server に移行される予定です。
Eclipse Live には 1 時間のウェビナーがあります (http://live.eclipse.org/node/635) CDO を紹介し、その使用例をいくつか示します。
他のヒント
私は(あなたのモデルが広大でない限り、それはできませんどの)重い物を持ち上げるを行うためにテネオで行くと思います。それが遅い場合でも、あなたはそれはJPAのアノテーションを使用して調整することができます。