事務對于確保數(shù)據(jù)的完整性與一致性是至關重要的。要想完全理解事務,必須得熟悉一些基本概念、模型還有策略。Mark Richards說到“混淆事務模型與事務策略是個常見錯誤”。這篇文章談到了“Java™平臺所支持的三種事務模型并對基于這些模型的四種主要事務策略展開了討論。通過使用Spring Framework及Enterprise JavaBeans(EJB)3.0的一些示例,Mark介紹了事務模型的工作方式及他們緣何能作為從基本的事務處理到高速事務處理系統(tǒng)的基石”。
Java平臺支持三種事務模型:
* 本地事務模型——事務由DB資源而不是應用容器或框架管理。開發(fā)者管理連接而不是事務。
* 編程式事務模型——開發(fā)者從事務管理器中獲取事務,之后需要自己編寫事務啟動、提交、異常及回滾代碼。
* 聲明式事務模型——最常見的模型,又叫做容器管理事務。在這種模型下,容器管理著事務,開發(fā)者定義(聲明)事務的行為和參數(shù)。
但這種支持僅能描述事務基本信息和期望行為以及使用的語法和規(guī)則。事務策略能夠解決如下問題:何時需要使用REQUIRED或MANDATORY屬性、特定的指令、使用哪種模型及如何對特定的情況進行優(yōu)化。
Mark在之前的一篇文章中討論了事務模型的優(yōu)勢與陷阱。
這篇文章介紹了使用特定模型的策略及如何以恰當?shù)姆绞绞褂媚P汀O旅媪谐隽诉@四個策略:
* 在客戶端發(fā)出了多個基于服務器或基于模型的調(diào)用來完成一個單獨的工作單元時需要使用客戶端編排(Client Orchestration)事務策略。
* 在對后端調(diào)用的主要入口方法是粗粒度(如果你愿意可以稱其為服務)的情況下需要使用API層事務策略。
* 高并發(fā)事務策略是上面策略的一個變種,在應用無法支持長事務的情況下需要使用該策略(通;谛阅芎涂缮炜s性考慮)。
* 高速處理事務策略也許是最極端的一種事務策略了。如果應用需要最快的處理時間(以及吞吐量),同時還要在處理過程中保持一定的事務原子性,那么可以使用該策略。
Java平臺支持三種事務模型:
* 本地事務模型——事務由DB資源而不是應用容器或框架管理。開發(fā)者管理連接而不是事務。
* 編程式事務模型——開發(fā)者從事務管理器中獲取事務,之后需要自己編寫事務啟動、提交、異常及回滾代碼。
* 聲明式事務模型——最常見的模型,又叫做容器管理事務。在這種模型下,容器管理著事務,開發(fā)者定義(聲明)事務的行為和參數(shù)。
但這種支持僅能描述事務基本信息和期望行為以及使用的語法和規(guī)則。事務策略能夠解決如下問題:何時需要使用REQUIRED或MANDATORY屬性、特定的指令、使用哪種模型及如何對特定的情況進行優(yōu)化。
Mark在之前的一篇文章中討論了事務模型的優(yōu)勢與陷阱。
這篇文章介紹了使用特定模型的策略及如何以恰當?shù)姆绞绞褂媚P汀O旅媪谐隽诉@四個策略:
* 在客戶端發(fā)出了多個基于服務器或基于模型的調(diào)用來完成一個單獨的工作單元時需要使用客戶端編排(Client Orchestration)事務策略。
* 在對后端調(diào)用的主要入口方法是粗粒度(如果你愿意可以稱其為服務)的情況下需要使用API層事務策略。
* 高并發(fā)事務策略是上面策略的一個變種,在應用無法支持長事務的情況下需要使用該策略(通;谛阅芎涂缮炜s性考慮)。
* 高速處理事務策略也許是最極端的一種事務策略了。如果應用需要最快的處理時間(以及吞吐量),同時還要在處理過程中保持一定的事務原子性,那么可以使用該策略。