在 Spring Boot 應用程式中,我們有擴展 JpaRepository 的用戶定義存盤庫介面。JpaRepository 又具有一個實作類 SimpleJpaRepository。SimpleJPARepository 上有 2 個注解
- @Transactional
- @Repository
因此,我們可以在擴展 JpaRepository 的用戶定義存盤庫介面上跳過這兩個注釋。那么為什么我們需要在服務類上顯式添加@Transactional,它也只使用我們用戶定義的存盤庫物件?
uj5u.com熱心網友回復:
使用 Transactional 注釋的目的是使帶注釋的方法中的所有內容都發生在同一個作業單元內,并且要么一切成功,要么一切都失敗。僅將事務放在每個存盤庫上意味著每個存盤庫都可以擁有自己的事務,第二個失敗不會回滾第一個。
您可以在服務上使用非事務性方法,或者每個方法,因此將類注釋為服務并不意味著 spring 可以假設一切都是事務性的。
uj5u.com熱心網友回復:
這是一個有與是的問題。
一個物件可以是Transactional,或者有一個成員物件是Transactional。
如果物件有一個成員物件是Transactional,它不會自動成為它Transactional自己。
物件 A 包含物件 B Transactional,即不生成物件 A Transactional。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454184.html
