0
我想重構我的項目之後存儲庫模式的現有代碼庫,以便我可以使項目更加可重用和可測試。需要一種方法來註釋存儲庫模式下的服務方法
我已經編寫了服務和存儲庫,當我嘗試在服務層上設置身份驗證,授權和事務註釋時,我遇到了問題。 這些註釋僅適用於控制器級別,但不適用於服務層級,因此我需要一種註釋服務方法。 是否可以這樣做?
如果有人在Play框架中使用存儲庫模式指向我樣本,或者更好地進一步處理,那將會很有幫助。
我想重構我的項目之後存儲庫模式的現有代碼庫,以便我可以使項目更加可重用和可測試。需要一種方法來註釋存儲庫模式下的服務方法
我已經編寫了服務和存儲庫,當我嘗試在服務層上設置身份驗證,授權和事務註釋時,我遇到了問題。 這些註釋僅適用於控制器級別,但不適用於服務層級,因此我需要一種註釋服務方法。 是否可以這樣做?
如果有人在Play框架中使用存儲庫模式指向我樣本,或者更好地進一步處理,那將會很有幫助。
認證和授權只對請求有意義,所以堅持使用除控制器方法之外的任何其他方法都不會起作用。
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();
});
}
感謝您的回覆。是的,我們可以按照你提到的方式來做到這一點,但有些情況下,我需要在我的服務中堅持一系列依賴另一方的服務。例如,我們堅持父母第一個將在單獨的交易和下一個孩子,這將是另一個交易。如果我的孩子堅持失敗,它不會恢復父母堅持。最終我需要一種方法來在單個事務中包裝我的服務。 – Sivakumar