2009-04-14 82 views
2

我正在分析JTA(Java事務API)和.NET對應System.Transactions之間的不同行爲:兩者之間的方法完全不同。事實上,Java的Transactions版本看起來更像是一個規範,讓開發者有義務執行Transactions,TransactionManager和其他定義的接口。 .NET提供了一個更具體的實現,它不允許開發人員定義自己的對象,但提供接口來處理在事務生命週期中管理的資源(而Java爲同一目的提供了一些XTA *接口)Java事務API和.NET System.Transactions

  • 我想知道是否有任何機會將使用JTA的Java代碼移植到.NET以及他/她注意到哪些主要區別。

  • 此外,有誰能夠澄清我對TransactionManager.rollback(在JTA中)TransactionManager.setRollbackOnly的行爲嗎? .NET版本只有Transaction.Rollback方法更重要。

回答

1

rollback()將實際的回滾命令發送到底層資源。 setRollbackOnly()在當前事務處理時決定是否提交或回滾時讀取當前事務標記。一旦setRollbackOnly()被調用,唯一可能的結果就是回滾,但是在調用setRollbackOnly()時實際上並沒有執行回滾調用。

這就是兩種方法背後的想法。我不確定不同的實現在多大程度上做出了區分,即使setRollbackOnly()在調用時實際上會進行回滾,也不會有任何實際區別。