複雜業務中,統一處理多表操作

2021-08-06 01:40:42 字數 1253 閱讀 2872

在乙個複雜的後台業務處理中,總是會出現通過各種邏輯處理過程中,產生對很多表的增刪改操作、呼叫其他模組介面、訊息佇列等,如果直接邊處理邊對錶修改,則@transactional事務管理的範圍就很大,需要對很多方法新增該注釋,為了讓事務管理的範圍盡量減小,就將所有的需要的操作全部快取起來,再統一處理。

我使用的map> 區域性變數的方式快取起來,在分析需求的時候,已經明確了業務會對哪些資料造成變化,使用列舉定義出來,作為map的key,value就是需要對應的表或者訊息的內容。

增加一條處理記錄
呼叫方法 addelement(map, [key], (t) [element]);

/**

* 資料集合中新增元素

**@param map 資料集合

*@param key

*@param element 新元素

*@param

*/private

void

addelement(map> map, tableem key, t element)

listts = map.get(key);

if (null == ts) else

}

查重,去重
由於我的業務存在不同的業務會影響同乙個表的問題,我的業務唯一健都是recordid,呼叫方法 ([element]) getelement(map, [key], [primary_key])

private static  t getelement(map

<

string, list

>

map, string key, string recordid)

for (t t : ts)

} catch (nosuchmethodexception | illegalacces***ception | invocationtargetexception e)

}return

null;

}

按前面方法統一獲取到之後,統一在乙個方法內,註解@transacal遍歷處理map即可;

這種方式,業務處理較為清晰,便於維護,但不知道是否存在其他問題?

在SpringMVC中統一處理異常

在springmvc中,允許開發人員自定義方法,用於統一處理異常,以至於某些異常可能在多種處理請求的過程中都可能出現,但是,只需要編寫1次處理的 即可!該機制的核心在於 可能出現異常的 處理請求的方法,並不通過 顯式的處理異常!則等同於這些處理請求的方法會將異常丟擲,而springmvc框架在呼叫這...

統一處理異常

1.controlleradvice 註解定義全域性異常處理類 controlleradvice public class globalexceptionhandler 2.exceptionhandler 註解宣告異常處理方法,註解的方法的引數列表裡,還可以宣告很多種型別的引數 controlle...

Web應用架構 錯誤統一處理, 和事務統一處理

因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...