2016-09-27 61 views
1

我們有幾個類以Command-Query-Separation方式寫入和讀取數據庫層。Run spring @Transactional註釋方法在單個事務中

這些類中的每一個都分別用@Transactional(readOnly = true)用@Transactional註釋。

現在我們已經實現了一個數據導入,它使用我們的命令層創建許多對象並將它們寫入數據庫。

現在,每個單個對象的寫入都在中完成,在其自己的事務中,我確信這是一個主要的性能殺手。

是否有一種簡單的方式來註釋數據導入類的方式,即使它多次在命令層調用多個@Transactional註釋的方法,所有將在單個事務中完成

這是否甚至是提高插入性能的有效方法,還是您認爲這是一個壞主意?

+4

只需註釋父方法。那個叫他們的人。在一次交易中做所有這些事實上是可取的,因爲那麼整個過程將一起完成...... –

+0

我已經嘗試過了,看起來沒有任何影響 - 是不是這樣,一種\ @Transactional方法從另一個實例調用\ @Transactional方法,這會自動導致創建新的事務? – SebastianRiemer

+0

取決於。在通過'interface'自動裝配的方法中?你在使用AspectJ編織嗎? –

回答

0

錯誤一:我使用了一個ExecutorService,因爲我在這篇文章中看過How to use spring transaction in multithread spring不支持與事務結合的多線程。

錯誤二:我替換了ExecutorService,直接使用註解@Transactional調用Spring託管類方法,但此時它不起作用,因爲該類嵌套在調用類中,因此它不被視爲從外面呼叫「。

相關問題