簡體   English   中英

如何在春季以編程方式設置事務的回滾點?

[英]How can I programatically set the roll back point for a transaction in spring?

如何在Spring中指定事務的回滾點?

假設出現以下情況,我必須在數據庫中執行很長的插入操作,這需要花費很多時間(幾分鍾)。 此插入操作被包裝在事務中,該事務可確保在發生問題時中止事務,並將數據庫還原到事務開始之前的狀態。

但是,此解決方案影響應用程序的性能,因為在執行長事務時其他事務無法訪問該數據庫。 我通過將大型事務拆分為幾個執行相同操作的較小事務來解決了此問題。 但是,如果這些小事務之一失敗,則數據庫將回滾到該最后一個事務之前的狀態。 不幸的是,這會使數據庫處於錯誤狀態。 我希望如果這些較小的事務中的任何一個發生錯誤,則數據庫會回滾到第一個小事務之前的狀態(即,完全相同的狀態,如果此操作由單個事務執行,它將回滾)。

您對我如何使用Spring交易實現這一點有什么建議嗎?

您應該查看http://docs.spring.io/spring/docs/4.0.3.RELEASE/javadoc-api/org/springframework/transaction/TransactionStatus.html 它具有所需的功能:-創建保存點-釋放保存點-回滾到保存點

當然,您的事務管理器(以及基礎的JDBC驅動程序和數據庫)應支持該功能。

如果可以對登台表和生產表使用相同的主鍵序列,則應將數據從stg批量轉移到prod。 當小事務失敗時,可以使用登台表中的鍵從生產表中刪除。 這樣您就可以將生產表恢復到原始狀態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM