面試整理

磊子9527發表於2024-04-02

1 spring 事務的傳播與失效

融入外界事務
掛起外界事務
巢狀事務
(1)required適用於99.9%的修改性方法,A方法->B方法(B方法在A方法中被呼叫),傳播行為修飾的是被呼叫的方法,B方法需要一個事務,當A方法含有事務時,B方法加入A中;否則B方法自己建立一個事務。
(2)support適用於99.9%的查詢性方法,A有事務時,B會加入A事務;當A沒有事務時,B會以非事務方式執行

(3)mandatory表示B方法必須在有事務的A方法執行,否則會拋異常
(4)require_new表示B方法需要一個新事務,當A方法含有事務時,A方法會被掛起,重開新連結開啟一個新事務來執行B方法;當A方法沒有事務時,B事務必須建立一個新事務,執行B方法。當前方法必須執行在自己的事務中。
(5)not_support不支援事務,當A方法沒有事務時,B方法以非事務方式執行;反之,A方法事務被掛起,以非事務的方式執行B事務
(6)never表示B方法必須在沒有事務的A方法執行,否則會拋異常
失效
1.方法訪問許可權問題,只支援public
2.方法用final修飾,動態代理不能代理final方法
3.方法內部呼叫,同一物件內呼叫沒有使用代理,未被aop事務管理器控制
4.未被spring管理
5.多執行緒呼叫,事務管理內部使用threadLocal,不同執行緒間不在同一事務
6.表不支援事務
7.未配置事務
事務不回滾
8.錯誤的傳播屬性
9.自己吞了異常
10.手動拋了別的異常
11.自定義了回滾異常與事務回滾異常不一致
12.巢狀事務回滾多了,需要區域性回滾的地方未做異常控制
2 小表驅動大表
作為驅動表來說 會全表掃描
用小表作為驅動表 然後關聯欄位建立索引
3 redis 的hash 操作
hset hget hgetAll hmset hmget hdel

相關文章