簡體   English   中英

Spring的JdbcTemplate和Transactions

[英]Spring's JdbcTemplate and Transactions

使用JdbcTemplate時,是否需要顯式配置事務?

我的代碼布局如下所示:

我將有一個UserDao將被注入我的UserService,然后我的控制器將調用我的UserService中的方法。

我希望盡可能簡化事務,並且我不需要多個數據庫調用來跨越事務。

默認情況下,我是否必須在配置文件中執行任何操作或在任何地方使用@Transaction注釋?

現在在我的控制器中說我需要在我的userService和accountService上進行2次調用,我能否以某種方式明確地將其包裝在事務中?

userService.updateUser(user);
accountService.updateXXX(...);

是的, JdbcTemplate不能替代事務管理。 您仍然可以從數據庫事務中受益,因此userService.updateUser將在數據庫事務中運行,但如果accountService.updateXXX失敗,則userService.updateUser不會回滾。

如果您不想使用AOP,則可以使用TransactionTemplate 請參閱Spring參考文檔中的程序化事務管理

我之前看到的一種模式是MVC控制器類調用業務服務,該服務封裝了操作。 然后可以對業務類的方法進行注釋@Transactional

如果您的控制器想要對用戶和帳戶做幾件事並且在一個事務中完成所有這些事情,那么您應該擁有一個服務,其中一個方法可以完成所有這些工作。 為每個DAO創建一個服務並不是一個好主意,因為你最終會在DAO周圍執行無操作包裝並且處理速度會很慢,因為數據庫必須為每次調用DAO創建一個單獨的事務,你要做到這一點比它應該做的工作多得多。

該服務應該為控制器或其他任何人調用它提供功能。 我嘗試創建服務的想法是服務提供對特定類型的用戶有用的特定功能。

暫無
暫無

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

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