私は2つのテーブルチャートと同様のテーブル構造を持つchartHistoryを持っています
chart_id NUMERIC(9,0)
chart_ref_id NUMERIC(9,0) NOT NULL
chart_property VARCHAR2(20) NOT NULL
chart_value VARCHAR2(100)
チャートのエントリは、チャート参照IDの新しいプロパティ/値のペアを取得するときに、chartHistoryテーブルに保存する必要があります。
次のようにHibernateを使用して実装する予定です。
chartReferenceIdを使用してCHARTテーブルから値のリストを取得します
List<Chart> chartList = chartDao.findChartByVisitRef(chartReferenceId);
(名前付きクエリ:findChartByRef = from Chart chart where chart.chartReferenceId =:chartReferenceId)
取得したリストを使用し、chartListの値を使用してchartHistoryListを作成し、HibernateメソッドsaveAllを呼び出します
chartHistoryDao.saveAll(chartHistoryList);
保存したら、CHARTテーブルから既存のエントリを削除します。
chartDao.deleteAll(chartList);
受信した新規エントリのnewChartListを作成し、休止状態のsaveAllを実行します
chartDao.saveAll(newChartList);
ご覧のとおり、これは4つのクエリを実行します。古いレコードを取得し、それらをアーカイブテーブルに保存し、古いエントリを削除し、新しい値を挿入します。
これを実装するためのより良い方法があるかどうか知りたいですか?..(...から選択)に挿入する種類の何かがより効率的だと思いますか?ご意見をお聞かせください。