有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java删除实体策略

<>为了保持系统的一致性,可以考虑2种删除策略:

  1. 级联删除关系中的所有实体

  2. 模拟删除(即,实际上没有从数据库中删除任何内容,但是,例如,实体中的字段deleted具有值true,并且它会影响显示逻辑)

我喜欢第二种方法,但我不知道如何正确地实施它

例如,假设我们开发了一个简单的博客(用户、文章、评论和其他常见的东西)。让我们看看User实体(以及对应的表USER)。如果我们删除某个用户,那么他的deleted字段将具有值true。所有用户的评论都会留在原处,每个读者都会知道某条评论的作者是谁

所有这些看起来都很棒,但如果一个新用户(正在尝试注册)将指定与某个已删除用户相同的登录/电子邮件地址(其他唯一字段),我该怎么办?从理论上讲,这个唯一的字段值已经是免费的,可以使用。但是,如果有一天我决定取消删除那个被删除的用户呢

与这种情况相关的最佳实践是什么


共 (1) 个答案

  1. # 1 楼答案

    这实际上取决于您所使用的系统的特定需求和要求

    通常,在示例的第一部分这样的情况下,需要“软删除”功能,即使用户被“删除”,您也不希望他们的内容从系统中删除。然而,在这种情况下,你有一个缺点,那就是用户帐户永远在使用中,你将来不能再为其他任何人重复使用该帐户

    在其他情况下,首选“级联删除”选项,但它可能会成为一个非常有趣的管理工具,因为对于许多级联约束,一次删除可能会影响比预期多得多的表

    我认为理解你想要实现的目标很重要,因为这两种解决方案实际上都是有效的。具体的业务案例决定了哪一个最适合于特定的实现