私が取り組んでいるアプリケーションのモデル レイヤーには、Organization
クラスと 1 対多の関係を持つPerson
クラスがあります。Person
オブジェクトは、スーパークラスの別のオブジェクト セットとの 1 対多の関係に基づいて、さまざまな役割を持つことができますCertificate
。Person
aが「署名者」かどうかを判断するには、次のように呼び出します。
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
既にリストが含まれているかどうかを確認し、計算をやり直す代わりにリストを返すことができます。
私の質問は次のとおりです。署名者のリストのキャッシュを最新の状態に保つにはどうすればよいですか?