JPA2和EclipseLink - 尝试理解缓存

时间:2015-08-19 19:26:32

标签: jpa eclipselink

我想了解使用EclipseLink作为持久性提供程序的JPA 2中的缓存。我不知道我的想法是否正确。

例如: 我使用JTA交易。在一个名为A的实体类中,我声明了@Cacheable(true)注释。我从EJB bean调用一个更新A.class对象的方法。在第一次我调用em.find(A.class, 1)。我的问题是搜索顺序是什么。我提出了自己的思维方式。

  1. EntityManager搜索L2缓存中的实体。如果EM找到对象,它会将对象复制到L1缓存并停止搜索。
  2. Else EntityManager搜索L1缓存中的实体。如果EM找到该对象,则会停止搜索。
  3. Else EntityManager搜索数据库中的实体。如果EM找到对象,它会将对象放入L1缓存并停止搜索。
  4. 当我找到对象时,我修改了几个字段,我想调用em.merge(aClassRepresentant)。我认为当事务停止EntityManager时,将aClassRepresentant合并到L2缓存并自行销毁。我是否认为正确?

0 个答案:

没有答案