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

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

微服務架構中的Hibernate Join表

微服務架構中的Hibernate Join表

開滿天機 2021-05-14 17:10:02
我有兩種微服務,一種是用戶服務,另一種是產品服務,兩者都有自己的數據庫產品服務數據庫表user_products(id,user_id,product_id)產品(編號,名稱)用戶服務數據庫表User(id, name, ..)用戶與產品有著多對多的關系。由于user_products是僅在產品服務中存在的聯接表。我不確定如何為產品服務表創建休眠模型對象,以便獲得:屬于特定用戶的所有產品的列表產品所有所有者的列表不確定如何在上面兩個表的上方定義@ManyToMany關系
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

分析您的問題,您是否不認為產品和所有者之間沒有多對多的關系。一個產品如何由兩個不同的所有者(用戶)擁有?通常,電子商務系統中的產品ID標識1個唯一的物理實體。即使有超過1種相似產品(這是實際生產情況),IMO每種產品也將具有不同的產品ID。

但是,讓我們考慮一下兩個實體相互依賴的不同情況。在這里,出現在圖中的概念是有限的上下文

每個服務都應擁有其數據,并應對其完整性和可變性負責。每個服務應獨立存在,即具有更改和移入和移出運行時環境的能力,而不會對其他服務產生副作用。

讓我們舉一個更清晰的公司示例,該公司需要在其員工之間管理Project。我們可以在這里看到兩個不同的上下文(現在忽略所有其他與公司相關的處理)

  1. 項目

  2. 員工

如圖所示,我們無法在Project實體中直接引用Employee實體。

合適的解決方案是:假設將對象模型映射到關系數據源,而不是Project Service必須映射Employee類型,則它僅必須映射employee id屬性。

http://img1.sycdn.imooc.com//60a4dec5000167b406010201.jpg

Project_Resource模型的基礎映射表不會從數據庫中實現Employee對象。為了獲得或變異雇員,您將利用來自雇員上下文的雇員服務API調用。

因此,必須引入更多機制來支持這種隔離。具體來說,當通過員工服務刪除員工時,其他服務如何知道這種刪除?員工服務同步調用產品服務將導致高度耦合。在這種情況下,應該使用異步模式來解耦其他服務(更多地用于發布事件,另一個服務可以決定是否必須采取措施)

下面的博客很好地解釋了其他用例和其他解決方案,它們描述了Bounded上下文的使用,并注意了低耦合和促進內聚。 https://hackernoon.com/microservices-bounded-context-cohesion-what-do-they-have-in-common-1107b70342b3



查看完整回答
反對 回復 2021-05-19
  • 2 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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