Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除实体策略 为了保持系统的一致性,可以考虑2种删除策略:_Java_Entity - Fatal编程技术网

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

Java 删除实体策略 为了保持系统的一致性,可以考虑2种删除策略:,java,entity,Java,Entity,级联删除关系中的所有实体 模拟删除(即,实际上没有从数据库中删除任何内容,但是,例如,实体中的字段deleted具有值true,并且它会影响显示逻辑) 我喜欢第二种方法,但我不知道如何正确地实施它 例如,假设我们开发了一个简单的博客(用户、文章、评论和其他常见的东西)。让我们看看User实体(以及相应的表User)。如果我们删除某个用户,那么他的deleted字段将具有值true。所有用户的评论都会留在原处,每个读者都会知道某个评论的作者是谁 所有这些看起来都很棒,但是如果一个新用户(正在尝试注

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

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

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

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

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


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

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

    通常,在示例的第一部分这样的情况下需要“软删除”功能,即即使用户被“删除”,您也不希望将其内容从系统中删除。但是,在这种情况下,您将面临一个失败,即用户帐户将永远使用,并且您将无法在将来为其他任何人重复使用该帐户

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


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

    听起来您最好的选择是软删除(在用户表中放置一个标志)。如果您想重新激活一个用户,您可能会遇到以下问题

    用户A做了很多事情
    用户A进入休眠状态
    用户B使用相同的用户ID创建帐户。
    用户A想要返回


    您可能想做的是将站点上的所有内容引用到唯一的用户ID,并且从不删除用户。

    我们会软删除所有内容,并每晚将其存档,然后在一个月后硬删除生产数据库中的所有软删除内容。可能考虑从存档中删除超过六个月的软删除。这取决于你的需要和什么对他们有意义。