java - 确保 Java 中的 UML 约束?

标签 java model uml constraints

假设我的应用程序的设计有两个类: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/

相关文章:

ruby-on-rails - Rails_admin 多图片上传?

django - 操作错误没有这样的列

java - 枚举实现接口(interface)被 validator 拒绝 (java.lang.VerifyError)

java - POI 的 HSSF 数据格式 - 支持哪些颜色?

java - Spring、db和属性文件配置

uml - 这两个 uml 箭头等效吗?

uml - 如何在UML用例图中表示多个用户的登录?

java - MySQL 日期时间 <-> Java 日期

python - 如何解决错误 : Failed building wheel for h5py

uml 2.0序列图: is a reply message obligatory when modeling a synchronous message