亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

壶关县| 青铜峡市| 浦东新区| 鸡东县| 通江县| 邛崃市| 四川省| 漳平市| 葫芦岛市| 海淀区| 荣昌县| 余姚市| 华坪县| 鲁山县| 安国市| 泗阳县| 凤冈县| 三都| 富锦市| 三明市| 博白县| 从江县| 稷山县| 牡丹江市| 黄石市| 革吉县| 祥云县| 东方市| 海兴县| 新河县| 彭泽县| 肥西县| 天津市| 伊宁县| 马龙县| 四会市| 周宁县| 岫岩| 麻城市| 呼和浩特市| 莆田市|