当前位置: 首页 > 知识库问答 >
问题:

更新数据库中enities列表的最佳实践

郁明诚
2023-03-14

我正在开发Spring Boot Rest应用程序。ORMHibernate。我在DB中有更新相关实体的endpoint,例如,我有表“form”和表“rows”,每一行都附加到表单,所以一个表单可以包含表“rows”中的多行,每一行都有指向“form”的链接。

用例:我们正在获取要保存的行列表

  • 其中一些新so is不包含ID

最好的方法是手动处理所有这些情况吗?或者是否有任何ORM/Spring方法来处理这种或类似的情况。是否有一些我应该了解的最佳实践或方法?

谢谢你的帮助!

共有1个答案

阳狐若
2023-03-14

是的,Hibernate确实支持这一点。您可以根据模型中的Form和Row是什么(例如,Row需要是一个单独的实体吗?)使用以下之一:

  • 带有可嵌入行的ElementCollection

您还需要考虑更新的性质:您是替换整个实体(例如您会替换PUT操作)还是只是修补发送的特定属性?在前一种情况下,这些方法比后一种方法效果更好。

编辑我的答案以提供更清晰的信息:

最好的方法当然取决于您尝试做的事情的细微差别。例如,您是否需要在表单上下文之外更新或访问一行?它是否需要有一个单独的ID,如果需要,那么使用它的目的是什么?就最佳实践而言,即使对于解释的一对多方法,您将在哪里编写注释以及如何使用ORM也很重要,例如:只有表单实体拥有关系并保持行不注意它意味着您不能做一些简单的事情,例如在不读取和写入整个表单的情况下向表单添加一个新行,这将是浪费的,并引入潜在的事务性问题,假设默认隔离级别。

 类似资料:
  • 问题内容: 我已经使用.NET创建了数据访问层。在任何更新数据库记录的地方,我都使用sql来实现以下目的: 更新客户设置FirstName =:FirstName,LastName =:LastName,Address1 =:Address1,Address2=:Address2,.... etc 这意味着即使只更改了一个字段,记录中的每个字段也会更新。一位同事对此表示质疑,他说我们仅应在字段已更

  • 我开始创建一个系统,我(作为目前唯一的用户)将加载一个动态创建的PHP页面,该页面具有

  • 问题内容: 我出于好奇而问这个问题。基本上,我的问题是,当您拥有一个需要行条目才能具有像标志作用的事物的数据库时,最佳实践是什么?一个很好的例子就是堆栈溢出的标志,或者是bugzilla中的操作系统字段。可以为给定条目设置标志的任何子集。 通常,我会进行c和c ++的工作,因此我的直觉反应是将无符号整数字段用作一组可以翻转的位…但是我知道,由于多种原因,这不是一个好的解决方案。其中最明显的是可伸缩

  • 我知道“newInstance”-Pattern(实例化新Android片段的最佳实践)。但是如果另一个片段更改数据,我如何更新片段的这些参数? 我知道片段/活动之间的回调方法,但这些回调不会更新参数?! 例如:在创建片段时,我将URI与包一起传递给它。然后,另一个片段通过对第一个片段的changeUri(URI-URI)方法回调来更改这个URI。如果然后重新创建片段(例如由于屏幕旋转),它将使用

  • 我目前正在重构遗留代码,以使用Android架构组件,并在一种存储库模式中设置一个房间数据库和截取请求。因此,表示层/域层要求存储库获取LiveData对象进行观察,或告诉他与服务器同步,然后删除旧的db条目,并从服务器中重新提取所有当前条目。 我已经写了同步部分的测试,所以我确信,对象被正确地获取并插入到数据库中。但是当写一个测试来观察db表的条目时(并测试对象是否被正确保存,以及在将它们放入d

  • 问题内容: 背景 我的小组有4个SQL Server数据库: Production UAT Testing Developer 我在开发环境中工作。当需要提升我一直在处理的对象(表,视图,函数,存储的过程)的时候,我向经理提出了要求,经理将其提升为Test。经过测试后,她向提升为UAT的管理员提交了请求。在成功进行用户测试之后,同一管理员将晋升为正式生产。 问题 出于某些原因,整个过程很尴尬。 每