使用JDBC,我需要将数据插入SQL数据库表。但是,有一个JSON有效负载几乎需要进入一个单独的表,因此它不会对主表上的排序等进行加权。
出于性能原因,我想批量插入查询 - 但由于它们都是批处理的,因此在批量插入完成之前我将不会拥有主键。
过去我单独处理过它们 - 存储主键和然后将数据插入到辅助表中。但是,很难确保数据的健全性。中断,错误等都可能导致失败。
我需要在单个事务中包含两个插入,或者找到一些更好的方法来连接记录。
目前,这将进入H2数据库,但最终将支持MySQL,并可能支持postgres。
public StorageWriteResult write(List<DataContainer> containers) throws Exception {;
PreparedStatement statement = null;
try {
statement = conn.prepareStatement("INSERT INTO ...");
for (DataContainer container : containers) {
statement.setObject(1, container.getString(DataQueries.EventName).get());
// ...
statement.addBatch();
// insert data into a secondary table?
}
statement.executeUpdate();
}
finally {
if (statement != null) {
statement.close();
}
conn.close();
}
// ...
}