没有共享缓存的JPA find()和refresh()

时间:2015-05-31 09:50:46

标签: java jpa caching ejb shared-cache

我想知道在禁用共享缓存时这些方法是否相同:

@Stateless
public class EntityService
{
    @PersistenceContext
    private EntityManager em;

    public <T> T findEntity1(Class<T> clazz, long id)
    {
        return em.find(clazz, id);
    }

    public <T> T findEntity2(Class<T> clazz, long id)
    {
        T entity = em.find(clazz, id);
        em.refresh(entity);
        return entity;
    }
}

这些方法永远不会在现有事务中调用。 此应用程序仅使用JPA独占访问db,并且未定义触发器/存储过程/其他。

我的猜测是相同的,因为:

  • em.find()将搜索共享缓存(L2),但它是空的(已禁用)
  • em.find()将搜索自己的缓存(L1),但它是空的(没有先前的事务= em是新的)
  • em.find()将访问db
  • em.refresh()将第二次访问db,但在这种情况下实体始终是相同的

我错过了什么吗?

0 个答案:

没有答案