0

在我正在处理的应用程序的模型层中,我有一个Organization类,它与一个类具有一对多的关系PersonPerson对象可以具有许多不同的角色,这取决于它们与超类的另一组对象的一对多关系Certificate。为了确定 aPerson是否是“签字人”,我打电话给

public boolean isSignatory() {
    return this.certificatesAsSignatory.size() > 0;
}

我想返回一个组织的签字人列表,所以我将遍历一组相关人员,检查签字人。我想做的是缓存结果,所以我不必每次都从数据库中重新生成数据。我添加了一个看起来像的private字段Organization

private List<Person> signatories;

基本方法是这样的

public List<Person> getSignatories() {
    for ( final Person person : this.people ) {
        if ( person.isSignatory() ) {
            this.signatories.add( person );
        }
    }
    return this.signatories;
}

现在,当我调用方法返回列表时,我会将结果存储signatories并返回。当它再次被调用时,我可以检查是否signatories已经包含一个列表,并返回它而不是再次进行计算。

我的问题是:如何使签署者列表的缓存保持最新?

4

1 回答 1

1

因此,该列表包含所有签署人。每次 Person 从签署人变为非签署人时更新该列表似乎是个好主意,反之亦然。我猜你有一些方法可以设置一个人是否是签字人?在该函数中,您可以调用清除缓存,以便下次需要时重新填充列表。我也猜想当一个新的人被插入到数据库中并且应该是签名人时可以做到这一点。

很难更具体,因为我不知道您的代码是如何构建的。但是缓存的想法是在其中的数据发生变化时重置它。

于 2013-08-15T14:15:50.843 回答