2016-08-22 77 views
1

在我的web項目中有一個很大的實體對象(JAVA spring,hibernate,spring-boot)在更新POJO對象中的字段時,我必須將某些事件推送到隊列中,並且執行一些非事務性操作。哪種設計模式(優雅的方式)應該用於以下用例?

我有兩個問題

  1. 現在,我打算寫一個方面的對象,它確實這些非事務性的行爲和事件推動。我有關於服務層方法的@transactional(寫入方面)。這些方面方法中的失敗是否會回滾服務層方法的事務?

  2. 我提供了兩種更新POJO對象中字段的方法。

    • 個別休息api爲每個領域。
    • 更新整個對象的API。(只有NOT NULL字段將在這裏更新)


    在我需要檢查一個字段是否被更新與否並執行事件推動各領域的第二種情況(代碼看起來很笨拙)

有沒有什麼優雅的方法來解決這個問題?

+0

請問您能期待更具體的條款嗎?這太抽象了,不明白你真正需要什麼。 –

回答

1
  1. 您可以定義首先按方面包裝您的服務方法,然後通過事務處理。因此,這將是這樣的:

    BEGIN TRANSACTION 
        BEGIN ASPECT 
        METHOD 
        END ASPECT 
    END TRANSACTION 
    

您可以使用@Order(0)註釋上一個方面首先使用它。

@Aspect 
@Order(0) 
@Component 
public class SomeAspect {} 
相關問題