SpringMVC當中的 Transactional readOnly true 意義?

時間 2021-05-10 17:47:34

1樓:馬中斌

這是Spring的,不是SpringMVC的。

指明這是乙個唯讀事務,以對相應執行作優化。這只是事務的乙個方面,其他還有rollbackFor,isolation,propagation,timeout

2樓:lee

如果你一次執行單條查詢語句,則沒有必要啟用事務支援,資料庫預設支援SQL執行期間的讀一致性;

如果你一次執行多條查詢語句,例如統計查詢,報表查詢,在這種場景下,多條查詢SQL必須保證整體的讀一致性,否則,在前條SQL查詢之後,後條SQL查詢之前,資料被其他使用者改變,則該次整體的統計查詢將會出現讀資料不一致的狀態,此時,應該啟用事務支援

read-only="true"表示該事務為唯讀事務,比如上面說的多條查詢的這種情況可以使用唯讀事務,

由於唯讀事務不存在資料的修改,因此資料庫將會為唯讀事務提供一些優化手段,例如Oracle對於唯讀事務,不啟動回滾段,不記錄回滾log。

(1)在JDBC中,指定唯讀事務的辦法為: connection.setReadOnly(true);

(2)在Hibernate中,指定唯讀事務的辦法為: session.setFlushMode(FlushMode.NEVER);

此時,Hibernate也會為唯讀事務提供Session方面的一些優化手段

(3)在Spring的Hibernate封裝中,指定唯讀事務的辦法為: bean配置檔案中,prop屬性增加「read-Only」

或者用註解方式@Transactional(readOnly=true)

Spring中設定唯讀事務是利用上面兩種方式(根據實際情況)

在將事務設定成唯讀後,相當於將資料庫設定成唯讀資料庫,此時若要進行寫的操作,會出現錯誤。

3樓:牛草兒

transaction-read-only,就是開始事務時指定屬性為唯讀模式,只能read,不能write;預設情況下,事務是「read/write」模式。

4樓:劉旭

新增@Transactional readOnly=true在對應的類或方法中就不允許更新資料庫操作,spring也會對這種方式進行訪問優化。

springMVC中的controller,在沒有成員變數時,是安全的嗎?為什麼?

李偉 在spring單例模式下,controller方法中的物件引用是會建立多個物件,只要這個物件中沒有類變數靜態變數他是不會有執行緒安全問題的。成員變數是屬於物件的。只要不是單例物件他是不會有執行緒安全問題的。所以我們在設計類和方法是盡量是無狀態的。如果無法避免就可以使用ThreadLocal物件...

SpringMVC的工作原理是什麼樣的,跟Spring的關係是怎麼樣的?

史上第一慫 建議看一下黃勇寫的 架構探險,從零開發乙個web框架 作者相當於實現了乙個簡單的spring,springmvc框架。我只花了兩天時間看了前半本,就對spring與springmvc有了大致了解。 程式狗 上圖只是Spring MVC比較粗淺的執行過程,詳細的執行過程有時間再來答吧。由上...

在 Manhattan SC 當中的 Working verb 能否被翻譯成 謂語動詞 ?

sapereaude 是用以和英文句的句法結構當中,不能當主角 主要動詞的 動狀詞 verbals 做分別,亦即,用以和下列這三種詞類 分詞 participle,過去 被動past or passive分詞,以及現在 主動present active分詞 動名詞 gerund。跟主動分詞有同形綴尾...