2013-05-08 51 views
0

我已經在互聯網上找到了一個沒有太多成功的精確答案。這是我的場景。在一批中插入並更新

在JDBC中,標準做法是在一個語句中添加幾個「插入」或幾個「更新」並將它們作爲批處理執行。這些是同質的查詢,並且對它們進行批處理非常合理。大!

現在我們來考慮一下這種情況。一筆交易由一個「插入」和其他「插入」組成,視爲成功。一個例子是你有一個對象Parent_A,它有一個子列表[Child_M,Child_N,Child_O,...]。保存Parent_A需要您也成功保存孩子。

另一個稍有不同的例子是,你有一個用戶U和孩子戶口A用戶U沒有帳戶A.但是在插入一個新帳戶可能存在,那就是爲用戶U,它需要你也用賬戶信息更新用戶U(這將是一個交易)。

鑑於上述兩種情況,是否有可能: 1)給定一個家長列表,您是否可以批量處理一個事務下的所有查詢? 2)給定一個用戶列表,你能夠插入和更新每個用戶在一個批處理執行中的帳戶,並在一個單一的交易?

我希望這不是太冗長!

+0

你想這樣做,只用JDBC或者是你打開改變你的設計的ORM? – Thihara 2013-05-08 04:42:26

+0

我想保持它在JDBC級別,除非它變得太毛茸茸 – mainas 2013-05-08 11:13:31

回答

0

您可以在Statement上使用addBatch(String)方法。但是,由於這需要你自己實際構建整個sql字符串(不使用PreparedStatements /綁定變量),所以對每個表(即Parent,Child)執行1批處理操作可能會更簡單如果全部成功,則爲commit