0

静的データ、つまり国のリストなどの頻繁に変更されないテーブルのデータを管理するための Java (または Groovy) ソリューションを探しています。

国のリストをテキスト ファイルに保存し、サーバーの起動時にテーブルを自動的に更新したいと考えています。単純にすべてのテーブルを削除してからテキスト ファイルにデータを再挿入することはできません。これはキーの制約に違反するからです。

DbUnit は、XML ファイルから DB へのデータのロードをサポートするライブラリです。それは私が必要とすることをほとんど行うリフレッシュ操作を持っています。これにより、ファイルにあるがDBにない行が挿入され、ファイルにもあるDBの行が更新されますが、DBにあるがファイルにない行は削除されません。

誰かがこの問題の良い解決策を見つけましたか?

ありがとう、ドン

4

3 に答える 3

1

制約を延期することで、以前にこの問題に取り組んだことがあります。

通常、データが行に挿入または更新されると、制約がチェックされます。行が挿入されると、すべての制約がチェックされ、行が承認または拒否されます。ただし、トランザクションがコミットされるまで制約チェックを延期することはできます。見る:

http://www.remote-dba.cc/t_garmany_easysql_deferred_constraints.htm

これはベンダー固有の動作です。Oracle では動作しますが、私の知る限り、mysql ではサポートされていません。

于 2009-08-19T20:56:52.760 に答える
0

Hibernate を使用している場合は、Castor を使用して国 (たとえば) の XML ファイルを Hibernate モデル オブジェクトにロードし、それらのオブジェクトを永続化できます。

挿入/更新/削除ロジックを自分で管理する必要がある場合があります...これは、次の擬似コードで要約できます。

  • Castor を介して XML を Hibernate オブジェクトにロードする
  • 各オブジェクトについて:
    • オブジェクトが DB にある場合は、更新を呼び出します
    • オブジェクトが DB 上にない場合は、save を呼び出します
  • 次に、DB の各レコードに対して
    • 各レコードをオブジェクトのリストと比較し、リストに見つからない場合は削除します

それが明確であることを願っています...ユーザーが XML ファイルをアップロードして DB を更新する同様のプロセスがあります。

于 2009-08-19T19:00:57.003 に答える
0

いくつかのオープン ソースの dbms システムがあり、dbunit は適切に見えます。

マスター コピーをテキスト ファイルとして保持する理由がわかりません。データベースをマスターとして使用しないのはなぜですか?

于 2009-08-19T18:46:34.693 に答える