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