为什么jpa onetoone(甚至是onetomany)有自己的优势 orphanRemoval
默认为 false
.
我的意思是,将remove操作强制到已经从关系中移除的实体上,并在默认情况下将remove操作级联到那些实体上,用户是否可以选择不显式地执行该操作?
如果只使用默认值,默认值为false的当前行为是否不会导致孤立条目(可能成为僵尸记录)随着时间的推移导致数据库表膨胀?还是我错过了什么?
谢谢
更新(12/6/2020):有一个原因,我问特别关于 OneToOne
& OneToMany
. 至少在这两种情况下,据我所知,默认的删除行为在大多数情况下是最合适的做法&不删除实际上是不建议的&因此问题就来了。
更新了与oracle官方文档的链接,以供参考,
当一对一或一对多关系中的目标实体从关系中移除时,通常需要将移除操作级联到目标实体。这样的目标实体被认为是“孤立的”,可以使用orninRemoval属性来指定应该删除孤立的实体。
1条答案
按热度按时间dohp0rv51#
如果默认操作为true,那么它将在用户不知情的情况下删除关联的表记录。大多数开发人员通常会忽略级联操作的默认行为,并最终删除相关的表数据。如果您已经删除了数据,并且无法取回数据。在我看来,在用户不知情的情况下删除数据有点可怕。
如果忽略了删除标志并将其保留为默认选项,则当前行为将允许您选择该选项。你可以选择清理孤儿记录,或者保持原样。清理孤立记录可以通过一个带有join子句的简单delete查询来完成。
在某些情况下,您可能需要孤立记录来追溯历史。例如-订单和产品信息。可以删除产品,但您不想删除关联的订单。