編程式事務(wù):所謂編程式事務(wù)指的是通過編碼方式實(shí)現(xiàn)事務(wù),即類似于JDBC編程實(shí)現(xiàn)事務(wù)管理。管理使用TransactionTemplate或者直接使用底層的PlatformTransactionManager。對于編程式事務(wù)管理,spring推薦使用TransactionTemplate。
編程式事務(wù)就是自己寫Try catch語句調(diào)用commit\rollback等函數(shù)來實(shí)現(xiàn)那段業(yè)務(wù)數(shù)據(jù)改變的事務(wù)性。指通過硬編碼的方式做事務(wù)處理,這種處理方式需要寫代碼,事務(wù)中的邏輯可以自己定制;可以是數(shù)據(jù)庫的操作,也可以是其他的操作。
聲明式事務(wù):管理建立在AOP之上的。其本質(zhì)是對方法前后進(jìn)行攔截,然后在目標(biāo)方法開始之前創(chuàng)建或者加入一個(gè)事務(wù),在執(zhí)行完目標(biāo)方法之后根據(jù)執(zhí)行情況提交或者回滾事務(wù)。聲明式事務(wù)最大的優(yōu)點(diǎn)就是不需要通過編程的方式管理事務(wù),這樣就不需要在業(yè)務(wù)邏輯代碼中摻雜事務(wù)管理的代碼,只需在配置文件中做相關(guān)的事務(wù)規(guī)則聲明(或通過基于@Transactional注解的方式),便可以將事務(wù)規(guī)則應(yīng)用到業(yè)務(wù)邏輯中。
聲明式事務(wù)是通過框架和事務(wù)定義配置給自己的業(yè)務(wù)代碼添加事務(wù)性,比如Spring里面的AOP。它是通過Spring Proxy幫你做代理,自己不用額外的寫代碼,只要在Spring配置文件中聲明即可;通常用在數(shù)據(jù)庫的操作里面.