所以问题是,我在数据库中有很多表,而且几乎所有的表都是删除级联的。如果用户删除某一行,那么通知用户在整个数据库中删除哪些内容的最佳方式是什么。我应该读什么算法/模式?在java中实现是可取的。谢谢。
发布于 2013-12-04 20:53:34
首先,这似乎是一个错误的设计,当您考虑到贯穿对象图的级联路径是在编译时已知的,并且您在询问如何在运行时按需构造它们。你可以建造和储存它们一次。
也就是说,设计模式可能没有太多的理由。大多数情况下,您将需要反射,包括在属性或方法上查找注释的能力。
然后,当您在图中导航时,您将查找目标注释并添加或不添加,当然,如果您没有找到级联,您可以停止沿着图的那个分支。
如果有一些不同的处理类型的理由,访问者会应用,但是没有。Sun的注释处理工具使用了访问者,但这是用于编译时处理。
可能没有这样做的能力,但是在Java 8中这样做会很有趣,因为您可以更清晰地将导航代码与测试代码分离开来,方法是定义一个谓词(作为Lambda),然后在每个节点上对其进行评估。您的谓词将简单地检查是否存在级联注释。听起来,您可能没有使用ORM,所以您的代码中可能没有注释用于级联,更有理由有一个单独的谓词,因为这样您就可以有一个元数据版本,它实际上可以查看特定的数据库(Postgres),但是如果您想将它与ORM一起使用,那么您实际上需要更改几行代码。
https://stackoverflow.com/questions/20385593
复制相似问题