我有一个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