91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring的@Transactional怎么使用

發布時間:2022-06-06 09:48:22 來源:億速云 閱讀:117 作者:zzz 欄目:開發技術

本篇內容介紹了“Spring的@Transactional怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1、原理

事務的概念想必大家都很清楚,其ACID特性在開發過程中占有重要的地位。同時在并發過程中會出現一些一致性問題,為了解決一致性問題,也出現了四種隔離級別,這里就不再詳述了,感興趣的可以去查一下。

Spring中的事務有兩種:

  • 編程式事務

  • 聲明式事務

通常情況下我們使用聲明式事務,它是基于SpringAOP實現的。基于AOP實現的事務極大得幫助了我們的開發效率,其本質是對方法進行前后攔截,在目標方法前加入一個事務,在目標完成后再加入一個事務進行提交或者回滾,這種方式下我們并不需要在目標方法中的代碼中摻雜事務管理代碼,輕松進行事務管理。

而編程式事務就需要我們修改代碼來進行事務管理。這種方法看似很麻煩,但是它的存在自有它的道理,上面我們講到的聲明式事務控制,其控制的細粒度只能作用到方法上,無法在代碼塊中實現聲明式事務控制。我們都知道,一旦加上事務,程序的運行效率就會降低,所以編程式事務也有它的用武之地。

但是我們的廣大勞動人民也是智慧的。直接將需要事務的代碼塊獨立成方法,這樣仍然可以使用聲明式事務。當然在開發中具體情況要具體分析了。

2、用法

事務的傳播行為: 

Spring的@Transactional怎么使用

 事務的隔離級別

Spring的@Transactional怎么使用

@Transactional屬性

Spring的@Transactional怎么使用

 示例代碼:

@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class RoleServiceImpl implements RoleService {

    @Autowired
    private RoleDao roleDao;

    @Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
    @Override
    public List<Role> findAllRoles() {
        return roleDao.selectAllRoles();
    }
}

3、拓展

1、為什么聲明式事務只能應用于方法上?

  • 因為聲明式事務是基于AOP實現的,AOP是基于動態代理實現的。

  • 動態代理只會捕捉來自外部的方法調用,

  • 意思就是類內部的方法調用類內部的另外方法,并不會發生事務行為。

“Spring的@Transactional怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

深水埗区| 新民市| 克什克腾旗| 金堂县| 汉源县| 高唐县| 涡阳县| 新竹县| 宣恩县| 安新县| 醴陵市| 太原市| 兴安县| 布尔津县| 辽源市| 牟定县| 阿克陶县| 吉林市| 长宁区| 缙云县| 武城县| 东台市| 星子县| 淮安市| 高雄市| 弥渡县| 佛山市| 伊川县| 内丘县| 望谟县| 灵璧县| 通道| 金阳县| 普宁市| 北安市| 中超| 溆浦县| 图片| 山东省| 乌鲁木齐市| 布尔津县|