2012-06-08 51 views
2

我正在使用spring/hibernate。我有服務層和DAO層。事務放置在服務層。 我有FirstServiceImpl類。在FirstServiceImpl類的一個方法中,它有500行代碼。我所做的是我把所有500行代碼放在一個單獨的類中(編寫了一個接口和實現類。在FirstServiceImpl類中,我自動裝配了新創建的接口以訪問其單一方法)。 我將@Transactional放在FirstServiceImpl類上。Spring事務性上下文包裝?

我的問題是「新創建的類邏輯是否也在事務性上下文中運行」?

謝謝!

回答

0

我不確定,但我認爲它會使用transaction propagation。但我可以告訴你一定的方法來測試它是否有效。

在單個事務中通過您的代碼執行以下數據庫操作。

在db中插入/更新一行,嘗試在同一個事務中插入/更新第二行。

插入第二行時故意引發異常。如果您可以在數據庫中看到「第一項」,那意味着您的交易不會回滾。它不起作用。

雖然數據庫中沒有第一行條目,這意味着您的事務已回滾。在這裏你可能會得到UnexpectedRollbackException

測試之前,請確保您的註解是@Transactional(propagation=Propagation.REQUIRED)