spring boot 裏面 事務踩的坑

咱們都知道Spring 裏面的事務分爲併發

/**
*支持當前事務,若是當前沒有事務,就新建一個事務。這是最多見的選擇
**/
int PROPAGATION_REQUIRED = 0;
/**
* 支持當前事務,若是當前沒有事務,就以非事務方式執行。
**/
int PROPAGATION_SUPPORTS = 1;
/**
*支持當前事務,若是當前沒有事務,就拋出異常。
**
int PROPAGATION_MANDATORY = 2;
/**
*新建事務,若是當前存在事務,把當前事務掛起。
**/
int PROPAGATION_REQUIRES_NEW = 3;
/**
*以非事務方式執行操做,若是當前存在事務,就把當前事務掛起。
**/
int PROPAGATION_NOT_SUPPORTED = 4;
/**
*以非事務方式執行,若是當前存在事務,則拋出異常。
**/
int PROPAGATION_NEVER = 5;
/**
*支持當前事務,若是當前事務存在,則執行一個嵌套事務,若是當前沒有事務,就新建一個事務。
**/
int PROPAGATION_NESTED = 6;

當一個事務中嵌套不少事務的時候,容易出現問題 產品中執行一個操做,往表裏面插入一行數據,在後面回對這個數據查詢檢索,若是咱們對於檢索的方法配置了 NOT_SUPPORTED ,那麼就會出現永遠查詢不到剛插入的數據。因此針對配置 聲明式事務 建議 readonly 的採用 SUPPORTS 其餘的使用 REQUIRED,若是一些事務會鎖表,並且會有高併發,咱們應該採用 REQUIRES_NEW高併發

相關文章
相關標籤/搜索