2016-12-02 42 views
0

我想重構我的項目之後存儲庫模式的現有代碼庫,以便我可以使項目更加可重用和可測試。需要一種方法來註釋存儲庫模式下的服務方法

我已經編寫了服務和存儲庫,當我嘗試在服務層上設置身份驗證,授權和事務註釋時,我遇到了問題。 這些註釋僅適用於控制器級別,但不適用於服務層級,因此我需要一種註釋服務方法。 是否可以這樣做?

如果有人在Play框架中使用存儲庫模式指向我樣本,或者更好地進一步處理,那將會很有幫助。

回答

0

認證和授權只對請求有意義,所以堅持使用除控制器方法之外的任何其他方法都不會起作用。

Transactional只是一個幫助器註釋來包裝JPA事務中的整個請求。無論如何,通常最好做好自己的包裝,所以你並不需要這樣做。取自the documentation的示例:

@Inject 
private JPAApi jpaApi; 

public void updateSomething() { 
    // do something with the entity manager, per instance 
    // save, update or query model objects. 
    jpaApi.withTransaction(() -> { 
     EntityManager em = jpaApi.em(); 
     Query query = em.createNativeQuery("update people set active = 1 where age > 18"); 
     query.executeUpdate(); 
    }); 
} 
+0

感謝您的回覆。是的,我們可以按照你提到的方式來做到這一點,但有些情況下,我需要在我的服務中堅持一系列依賴另一方的服務。例如,我們堅持父母第一個將在單獨的交易和下一個孩子,這將是另一個交易。如果我的孩子堅持失敗,它不會恢復父母堅持。最終我需要一種方法來在單個事務中包裝我的服務。 – Sivakumar

相關問題