【问题标题】:Caching database results in Java objects under Play 2.1在 Play 2.1 下缓存数据库导致 Java 对象
【发布时间】:2013-08-12 15:38:28
【问题描述】:

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

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

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

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 是否已经包含一个列表,并返回它而不是再次进行计算。

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

【问题讨论】:

    标签: java database caching playframework-2.1 ebean


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 2016-07-18
      相关资源
      最近更新 更多