私は別のAPIからのデータフローをキャプチャする必要があるとき、私は、ユースケースを持っています。例えば、私のコードは、Hibernateを使用してデータベースから、および私は1つの変換データ処理中にデータを読み取るPOJO
別のおよびいくつかのより多くの処理を実行して、最終的に最終結果のHibernateオブジェクトに変換します。以下のような一言で言えば、何かにPOJO1
にPOJO2
にPOJO3
。
Javaでは、私はPOJO3からの属性はPOJO1のこの属性から変換/作られたと推論できる方法があります。私は、データを別のモデルから流れてキャプチャすることができます何かを見てみたいです。このツールは、私は両方でOKだ、コンパイル時または実行時のいずれかになります。
私はコードと並行して実行し、各実行単位のデータ系統の詳細を提供することができるツールを探しています。
今、代わりのPOJO Iの状態にそれらを呼び出します!あなたはさまざまな状態を通して、あなたのモデルを反復処理し、変換開始位置を持っています。終わりに、あなたは、データベースに永続化したいという最終的なターミナルの状態を持っています
stream(A).map(P1).map(P2).map(P3)....-> set of B
あなたが調達イベントとして知られている技術を使用する場合は、はい、それを推測することができます。どのようにこの外観は、ご希望ですか?代わりに、状態P2に状態P1と状態P1に直接Aをマッピングするあなたが必要とP2にP1とP1にAをマッピングするのに十分なされているすべての操作をキューに入れるというようになります...あなたが任意の時にP1またはP2を回復したい場合時間、それはキューに入れられた操作の単に製品となります。いつでも後方限り、あなたはまだあなたのDBの状態をchagedしていないとして、前方または巻き戻し巻き戻しすることができます。P1、P2、P3は、スナップショットとして機能することができます。
この方法は、あなたがこの属性の正確なマッピングの流れを再構築することができるようになります。罰金は、属性レベルとして罰金、またはのように起こっている場合は、あなたのoprationsをキューに入れますグレインよりHowもちろん、それはあなた次第です目立て。
ここではイベントソーシングを描いていると、それがどのように動作するかの良い記事は次のとおりです。https://kickstarter.engineering/event-sourcing-made-simple-4a2625113224
更新:
私は、属性の変更を取得する方が技術1と考えることができます。あなたはそれがかなりのPOJOを強化するためにHibernateが使用されるのと同じ技術であり、同じ技術プロファイルは、トレースのために使用し、あなたのPOJOをinstumentすることができます。その後、キャプチャしPojo1、Pojo2、Pojo3上の各セッターの呼び出しに反応することができます。わからない私はそのように行っているかどうかの....
ここでは、バイトコード計測についてのいくつかのdetiled readinであるかのhttps://www.cs.helsinki.fi/u/pohjalai/k05/okk/seminar/Aarniala-instrumenting.pdf