gpt4 book ai didi

java - 确保 Java 中的 UML 约束?

转载 作者:行者123 更新时间:2023-12-01 06:18:40 33 4
gpt4 key购买 nike

假设我的应用程序的设计有两个类:PersonCompany 。另外假设我已经定义了一个 UML 图,它定义 Person 之间的一对多关系。和Company :每个Person对象必须恰好属于一个 Company ,以及 Company可以包含许多Person s。

有哪些最佳实践可以确保这个简单的约束始终成立,即永远不会出现 Person 的时间点。对象包含在多个 Company 中?我想到了三种方法:

  1. 拥有完美、无错误的代码,永远不会违反我的任何约束。然而,作为一个现实主义者,我知道这是困难或不可能的,特别是随着约束数量的增加。

  2. 实现 ensureCorrectness()手动检查每个约束的方法。在此示例中,它将循环遍历所有 Person s,并确保正好是一个 Company包含Person 。如果没有,它将打印错误。我会经常调用这个方法。

  3. 使用 Hibernate 等来定义数据库模式并将数据存储到数据库中。在模式中,我可以定义一个约束来匹配 UML 图中的约束。然后,每当我将数据保存到数据库中时,Hibernate 就会检查所有约束,如果出现问题,就会打印错误。

但我不禁想知道是否有另一种更干净的方法可以在 Java 中执行此操作,该方法不依赖于 (1) 完美、(2) 手动验证或 (3) 关系数据库。是否有一个库或框架允许我在代码中指定类似于以下内容的注释:


@OneToMany(Person, Company)

或者更具体地说:


@OneToMany(Person, Company.persons)

假设Company类(class)有一个List<Person> persons成员变量。

如果我想确保一个人的社会安全号码在所有 Person 中都是唯一的s,我可以说:


@Unique(Person.SSN)

Java 中是否存在类似的东西?

最佳答案

公司与个人之间的关系并不困难。使例如Company 中包含 Person 元素的列表。您必须手动确保的一件事是该列表不包含单个 Person 的多个实例。

反之则更困难。您必须手动检查这一点(每个列表不包含同一个人的多个实例)。但你可以将它与之前的限制结合起来:

所有人员列表的长度应等于所有具有唯一人员的列表的长度。

我对数据库了解不多,但我会选择第二个选项(ensureCorrectNess)来检查上面的手动限制。

关于java - 确保 Java 中的 UML 约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16984968/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com