JPA缓存
JPA 2.0类似Hibernate,也分一级缓存和二级缓存。 JPA 1.0不支持二级缓存。
JPA 2.0 规范提供一个基本缓存操作API,可以在EntityManagerFactory中使用:
如果二级缓存激活,实体将不在一级缓存persistence context中获得,而是从L2二级缓存中获得:
二级缓存是跨事务场景的,是真正意义上的全局应用缓存。一级缓存persistence context是属于请求范围级别的缓存。
当二级缓存有效时,你就不能依靠事务来保护并发数据的,而是依靠锁策略:
1.在确认修改后,需要手工处理乐观锁失败
2.配置失效期,以及刷新策略,最小化使用锁策略
L2缓存和具体JPA实现有些关系,EclipseLink缓存整个实体, Hibernate缓存实体id和状态,下面是Hibernate的二级缓存实现:
原文:
JPA Caching
[该贴被banq于2009-08-26 17:14修改过]