亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Data:: 使存儲庫方法在服務接口中可用

Spring Data:: 使存儲庫方法在服務接口中可用

拉莫斯之舞 2022-06-15 09:56:42
我正在為我的存儲庫使用 spring Data 和 JPA/Hibernate。當我擴展 JpaRepository 時,我會像往常一樣獲得許多方法,因為它實現了 PagingAndSortingRepository 和 CrudRepository。我正在使用我的服務類中的存儲庫。我現在的問題是,有沒有一種方法可以在我的服務接口中獲取存儲庫中的所有方法,以便服務實現類可以使用與存儲庫相同的方法名稱將調用委托給存儲庫。我想使用與存儲庫方法相同的方法名稱,也不想直接從控制器調用我的存儲庫。我是否必須將 JpaRepository、PagingAndSortingRepository 和 CrudRepository 中的所有方法簽名復制到我的服務接口中?
查看完整描述

3 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

我認為您誤解了 a 的Service真正含義。
AService是處理業務邏輯的點。它的方法應該代表業務操作,而不僅僅是數據檢索/持久化的方法。

簡單地擁有所有JpaRepository方法并委托給 aRepository是大量代碼重復的秘訣,您應該避免這種情況。

Service根據您的業務需求構建您的。
如果您覺得不需要 Service 中間件,可能是因為您只獲取/設置數據,只需Autowire在.RepositoryController

使用Repository內部 aController是錯誤的并不總是正確的。這取決于。


查看完整回答
反對 回復 2022-06-15
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

如果我正確理解了這個問題。首先將存儲庫創建為擴展 JpaRepository 或其他接口的接口,并且不要忘記使用@Repository 注釋您的接口。然后創建您的服務并將您的存儲庫注入它,這樣您就可以在服務中創建自己的方法(可以使用任何名稱)。然后您可以將服務注入您的控制器。該技術主要使用。



查看完整回答
反對 回復 2022-06-15
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

您不需要將方法復制Repository到任何服務。Spring Data JPA 提供了許多強大的功能來編寫自定義查詢。


假設您有UserRepository一個名為的域User并希望通過他/她的電子郵件地址找到用戶。findByEmail不要在擴展的單獨服務中創建方法,只需在接口UserRepository內聲明它:UserRepository


User findByEmail(String email);

然后,Spring Data JPA 將為您完成所有繁瑣的工作。UserRepository您可以通過在Controller(或其他類)中注入來調用此方法。


以上只是一個簡單的例子。您甚至可以聲明具有多個條件的查詢:


User findByEmailOrUsername(String email, String username);


User findByEmailAndActiveTrue(String email);


List<User> findTop10ByEmail();

我建議您探索 Spring Data JPA 的官方文檔。通過編寫幾行代碼,您可以做很多事情。


查看完整回答
反對 回復 2022-06-15
  • 3 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號