缓存在JPA2.0中逐出行为

时间:2013-09-10 05:58:48

标签: caching jpa jpa-2.0

应用程序有三个实体:映射的超类person类实体,以及父类和子实体,它们是person的子类。

应用程序创建了四个实体实例:

  1. Person1是Person实体,主键为50
  2. Parent1是Parent实体,主键为100
  3. Child1是Child实体,主键为400
  4. Child2是Child实体,主键为600
  5. 缓存已在持久性单元中启用,持久性提供程序支持缓存,并且没有任何实体应用Cacheable注释,或者persistence.xml中的可缓存XML元素。

    应用程序执行以下代码:

    Cache cache = . . . ; 
    cache.evict(Person.class);
    Boolean result = cache.contains(Child.class, 400); 
    

    假设没有涉及缓存的并发活动。什么对象将保留在缓存中以及结果的值是什么?

    根据我的理解,当缓存启用时,Person1,Parent1,Child1和Child2都将存储在缓存中。当我们调用cache.evict(Person.class)时,Person及其子类(即ParentChild的对象将从缓存中删除,因此缓存将为空。因此,缓存的值将为false。我的理解是正确的还是我错过了任何一点?

0 个答案:

没有答案