事務的四種級別
(1)READ_UNCOMMITTED(讀未提交):,可讀取未提交事務的操作數據,這種情況會出現髒讀、重複讀、幻讀問題;
(2)READ_COMMITTED(讀提交):一個事務等另一個事務提交之後纔可進行讀取,解決了髒讀問題,但會出現重複讀、幻讀問題;
(3)REPEATABLE_READ(重複讀):讀取事務開啓的時候不能對數據進行修改,可能出現幻讀問題;
(4)SERIALIZABLE (序列化):是最高的事務隔離級別,在該級別下,事務串行化順序執行,可以避免髒讀、不可重複讀與幻讀。但是這種事務隔離級別效率低下,比較耗數據庫性能,一般不使用;
spring事務的七中傳播方式
spring事務的七中傳播方式主要是針對於方法中間傳遞時的事務機制,
例如:以方法B爲當前主體 ,方法A調用了方法B ,作爲方法B你看方法A
(1)PROPAGATION_REQUIRED(默認):如果A有事務則B加入A事務,如果A沒有事務則新B建一個事務;
(2)PROPAGATION_NEW:B總是開啓一個新的事務,如果A有事務則將A事務掛起先執行B事務;
(3)PROPAGATION_NESTED:RUGU :如果A沒事務則新建一個事務,如果A有事務則把B的事務當成A的一個子事務(A事務rolback,commit影響B,B事務rolback,commit不影響A);
(4)PROPAGATION_SUPPORTS:如果A沒事務,那就按普通方法執行,如果有A事務則用A的事務(B本身不具備事務);
(5))PROPAGATION_NOT_SUPPORTED:B總是非事務地執行,如果A有事務則把A事務掛起,自己還是以普通方法執行(B本身不具備事務);
(6)PROPAGATION_NEVER:如果A沒事務,那就按普通方法執行,如果A有事務則拋出異常((B本身不具備事務);
(7)PROPAGATION_MANDATORY:如果A沒事務就拋異常,如果A有事務則使用A的事務(B本身不具備事務);