2010-12-14 12 views
0

データが解析される外部ソースからのテキストファイルがあります。 Javaベースのパーサーの出力は、解析されたデータを表すJavaオブジェクトのリストです。データオブジェクトはJPAタグで注釈付けされ、データベースに保持されます。JPA:外部ソースからデータを更新するにはどうすればよいですか?

これらのテキストファイルは定期的に更新されていますが、変更されている場合とされていない場合があります。パーサが更新されたデータに対して再度実行されると、オブジェクトの新しいリストが作成されます。私はオブジェクトの新しいバージョンをデータベースに既に存在するものと統合する必要があります。どのような更新や新しいデータを永続化できるように、新しく保有されたテキストファイルのオブジェクトと何が違うのか、またデータベースには何が存在しているのかを把握するにはどうすればよいでしょうか?

+0

ファイルを完全に変更できますか、またはファイルのどの部分が変更の対象であるか常に知ることができますか? –

+0

ファイルのどの部分が変更されたのか分かりません。私は基本的に何が変更されたかを見るためにオブジェクトのdiffを適用する必要があります。 –

+0

その場合、データベースから対応するオブジェクトをファイル名(DocumentumやSharepointのようなDMSを使用している場合は多分バージョン)で選択し、それに応じて更新することをお勧めします。また、そのオブジェクトの特定のフィールドが変更されたかどうかを確認することもできます。 –

答えて

0

idnetifierが不足しています。オブジェクトを作成したソース(ファイル名、または特定のファイルの行 - 形式を記述していない)を表す列をテーブルに作成します。

これで、データベースからオブジェクトを読み取り、新しい値で更新してdbバックに書き込むことができます。

1

はい、単にmerge()を使用できるはずです。オブジェクトが同じIDを持つ限り、merge()は変更をマージし、変更されたものだけを更新します。

merge()はオブジェクトをロードする必要があります。そのため、オブジェクトのセットを知っている場合は、単一のクエリでプリロードすることで最適化できます。

+0

これはネストされたオブジェクトとどのように機能しますか?私の外側のオブジェクトは外側のオブジェクトに含まれる別のオブジェクトと同じようにIDを持っています。これを行うには、内側と外側のオブジェクトのIDがDBのIDと同じであることを確認する必要があります。私の使用例は、常に外部ソースからデータを読み込んでデータベースに更新することです。 –

関連する問題