中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

盱眙县| 文水县| 沂南县| 孙吴县| 宜阳县| 石楼县| 屏山县| 申扎县| 合水县| 榆林市| 黑水县| 大足县| 西峡县| 民和| 林口县| 阜阳市| 金塔县| 河间市| 新营市| 大田县| 舒兰市| 济南市| 通州市| 高青县| 南部县| 白银市| 喜德县| 静乐县| 阿尔山市| 南丰县| 神农架林区| 湟中县| 盐源县| 织金县| 阳春市| 武陟县| 永和县| 曲靖市| 宁津县| 抚宁县| 江川县|