使用什么算法或模式来检查哪些表中的哪些行将在mysql / pgsql中级联删除?

时间:2013-12-04 20:48:36

标签: java mysql algorithm postgresql design-patterns

所以问题 - 我在数据库中有很多表,而且几乎所有表都有删除级联。如果删除某一行,通知用户将在整个数据库中删除的内容的最佳方法是什么。我应该阅读哪些算法/模式?在java中实现它是可取的。谢谢。

1 个答案:

答案 0 :(得分:1)

首先,当您考虑通过对象图的级联路径在编译时已知并且您正在询问如何在运行时按需构建它们时,这似乎是一个错误的设计。你可以构建它们并存储一次。

也就是说,设计模式可能没有多大理由。大多数情况下,您需要反射,包括能够在属性或方法上查找注释。

然后在导航图形时,您将查找目标注释并添加或不添加,当然,如果您没有找到级联,则可以停止沿着图形的那个分支。

如果有某种理由以不同的方式处理类型,访客会申请,但没有。 Sun的注释处理工具使用了访问者,但那是用于编译时处理。

可能没有能力这样做,但是在Java 8中这样做很有意思,因为你可以通过定义一个谓词(作为一个Lambda)然后更清晰地将导航代码与测试代码分开。只需在每个节点进行评估。您的谓词将简单地检查Cascade注释的存在。听起来好像你没有使用ORM所以可能没有代码中的注释用于级联,更有理由拥有一个单独的谓词,因为那时你可能有一个实际查看特定数据库的元数据版本(Postgres),但是如果您想将它与ORM一起使用,那么您实际上就是在改变几行代码。