我有一個spring boot rest api。我在概念上有兩個名爲Venue和Address的實體,其中一個Venue必須有一個Address。 我的問題是我必須首先發布Address實體,然後使用Address實體的自鏈接發佈我的Venue實體。 直到我開始編寫我的瀏覽器客戶端,這似乎沒問題。我不喜歡這樣一個事實,即如果地址一直持續到數據庫,在場地持續之前發生了某些事件會中斷用戶連接,那麼最終會在數據庫中產生一個垃圾實體,因爲它不會關聯與任何東西。我可以通過刪除剛纔創建的地址來編寫我的客戶端來回滾,但如果我的api被第三方使用,那麼我遇到了問題。 有什麼辦法可以在發佈父實體的同時發佈我所有的子資源數據? 如果沒有,是否有任何共同的策略掃除孤立記錄?POST實體及其子資源作爲一個事務OR孤兒刪除策略
0
A
回答
0
這裏有幾個選項來思考。
如果同一個地址POST'd兩次,那麼DB中不應該有兩個記錄。確保這一點的方法是規範地址輸入,然後檢查該地址是否已被添加。如果已經添加,則返回409衝突或200 OK。如果實際上創建了新地址,則可以返回201 CREATED。您必須首先對數據進行規範化處理,以便同一地址的多個變體不會導致多個條目。例如,在正常化時將所有「Smith St.」和「史密斯街」和「史密斯街」。進入「史密斯街」。您可以將此邏輯應用於地址中的所有字段。然後您可以檢查該地址是否已經在數據庫中。
如果這是太多工作,那麼可以考慮在數據庫中沒有將Address作爲自己的表/集合。也許只有地址是場地中的一個字段。如果某些時候代碼需要從Venue中獲取地址並將其放入自己的表中,那麼可能會在需要時發生。
另一個想法是有一個服務,將場地和地址作爲輸入。也許你可以稱之爲VenueRequest。該對象將包含兩個主要字段Venue和Address。該服務將完成存儲數據庫地址然後是地點的工作。
+0
好的謝謝,即時通訊與我認爲的第一個選項去。 – gezinspace
相關問題
- 1. 實體刪除策略
- 2. 刪除Blobstore孤兒
- 3. SQL刪除孤兒
- 4. 刪除元素及其兒童事件
- 5. 休眠刪除孤兒
- 6. 使用JPA刪除孤兒
- 7. 刪除表中的孤兒
- 8. 休眠刪除非孤兒
- 9. JPA/Hibername孤兒刪除
- 10. OpenJPA孤兒刪除不起作用
- 11. GORM - 所有 - 刪除 - 孤兒不工作
- 12. 刪除文件孤兒刪除
- 13. 縫冬眠用實體的僱員刪除孤兒問題
- 14. 所有刪除孤兒爲Nhibernate
- 15. 休眠孤兒刪除 - 事務隔離級別
- 16. NHibernate的 - 一到一個映射與級聯全刪除,孤兒,不刪除孤兒
- 17. 刪除HTML實體及其內容
- 18. 刪除實體及其導航屬性
- 19. 刪除對象及其相關實體
- 20. EclipseLink如何從ManyToOne關係中的「一面」中刪除孤兒實體
- 21. 在實體框架中刪除一個對象及其所有相關實體
- 22. 寫入父實體以及在JPA模式上使用TABLE_PER_CLASS繼承策略存儲子實體時的策略
- 23. Nhibernate:刪除孤兒但在刪除父母時不刪除子女
- 24. 基於資源和子資源的XACML策略
- 25. 使用一個實體(及其主鍵)作爲另一個實體的ID
- 26. NHibernate的不更新刪除孤兒
- 27. NHibernate禁用全部刪除孤兒
- 28. Django:刪除M2M孤兒條目?
- 29. JPA:刪除孤兒,無效列
- 30. 刪除孤兒HABTM Ruby on Rails的
連接恢復後用戶是否會再次添加相同的地址,導致DB中的地址相同?還是擔心他們永遠不會繼續添加Venue,因此他們已添加的地址是無用的? –
擔心的是,他們不會繼續添加場地,以便已經創建的地址是無用的 – gezinspace
,因爲當他們再次嘗試時,他們將一起提交所有相關數據,它只會創建一個新地址,這很好,但地址已經創建的還在那裏。 – gezinspace