我有两个表 chart 和 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);
如您所见,这执行了四个查询,即。用于检索旧记录,将它们保存到存档表中,删除旧条目并插入新值。
我想知道是否有更好的方法来实现这一点?我猜有些东西插入 .. (select from...) 会更有效?请指教。