【发布时间】:2013-06-07 13:08:16
【问题描述】:
假设我的应用程序设计有两个类:Person 和Company。另外假设我定义了一个UML图,它定义了Person和Company之间的一对多关系:每个Person对象必须恰好属于一个Company,一个Company可以包含许多@987654328 @s.
有哪些最佳实践可以确保这个简单的约束始终成立,即永远不会有一个时间点Person 对象包含在多个Company 中?我想到了三种方法:
拥有完美、无错误的代码,永远不会违反我的任何约束。然而,作为一个现实主义者,我知道这很难或不可能,尤其是随着约束数量的增加。
实现手动检查每个约束的
ensureCorrectness()方法。在本例中,它将遍历所有Persons,并确保恰好一个Company包含Person。如果没有,它会打印一个错误。我会经常调用这个方法。使用例如 Hibernate 来定义数据库模式并将数据存储到数据库中。在模式中,我可以定义一个约束来匹配我的 UML 图中的约束。然后,每当我将数据持久化到数据库中时,Hibernate 将检查所有约束并在出现问题时打印错误。
但我不禁想知道在 Java 中是否有另一种更简洁的方法来执行此操作,它不依赖于 (1) 完美、(2) 手动验证或 (3) 关系数据库。是否有一个库或框架允许我在代码中指定注释,类似于:
@OneToMany(Person, Company)
或者更具体地说:
@OneToMany(Person, Company.persons)
假设Company 类有一个List<Person> persons 成员变量。
如果我想确保一个人的社会安全号码在所有Persons 中是唯一的,我可以说:
@Unique(Person.SSN)
Java 有类似的东西吗?
【问题讨论】:
标签: java model uml constraints