我已经在互联网上搜索了一个精确的答案而没有取得多大成功。这是我的情景。
在JDBC Universe中,标准做法是将一些“插入”或多个“更新”添加到一个语句中并作为批处理执行。这些是同质查询,批处理它们是完全合理的。太好了!
现在让我们考虑一下这个案例。一个事务构成一个“插入”和随后的其他“插入”被认为是成功的。一个例子是你有一个对象Parent_A,它有一个子列表[Child_M,Child_N,Child_O,...]。保存Parent_A要求您还要成功保存子项。
另一个稍微不同的例子是,你有一个用户U和一个子帐户A.用户U可以在没有帐户A的情况下存在。但是在插入一个新的帐户A,即用户U时,要求你也更新用户U带有帐户信息(这将是一个交易)。
鉴于以上两种情况,是否有可能: 1)给定父母列表,您能否在一次交易下批量处理所有查询? 2)给定一个用户列表,您是否能够在批量执行中插入和更新每个用户,并且所有用户都在一次交易中?
我希望这不是那么冗长!!
答案 0 :(得分:0)
您可以使用Statement上的addBatch(String)方法执行此操作。
但是,由于这需要您自己实际构建整个sql字符串(不使用PreparedStatements /绑定变量),因此对每个表(即Parent,Child)执行1次批处理可能更容易,并且仅{ {3}}如果一切都成功了。