欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JPA 2.0 Vs Hibernate:缓存方法的差异(一)(1)(2)

来源: javaer 分享于  点击 31095 次 点评:165

JPA 2.0的二级缓存

二级缓存被引进的JPA 2.0版本。JPA提供了基本的缓存操作的缓存API,而2级缓存共享状态的实体跨越不同的持久化对象。 2级缓存的持久化对象的基础,这是高度透明的应用程序。图2显示了JPA 2.0级缓存。

Level2Cache 
JPA Level 2 (L2) Cache

二级高速缓存通常是用来提高性能。但是,使用缓存可能会导致提取“陈旧”数据,因此您可以选择禁用缓存。

  1. public interface Cache {  
  2. /**  
  3. * Whether the cache contains data for the given entity.  
  4. */  
  5. public boolean contains(Class cls, Object primaryKey);  
  6.  
  7. /**  
  8. * Remove the data for the given entity from the cache.  
  9. */  
  10. public void evict(Class cls, Object primaryKey);  
  11.  
  12. /**  
  13. * Remove the data for entities of the specified class (and its  
  14. * subclasses) from the cache.  
  15. */  
  16. public void evict(Class cls);  
  17.  
  18. /**  
  19. * Clear the cache.  
  20. */  
  21. public void evictAll();  
  22. }  
  23.  

JPA的2.0缓存API还提供了允许您刷新或绕过使用查询提示,两个实例:CacheRetrieveMode和CacheStoreMode定义缓存。您使用CacheRetrieveMode读取缓存数据:

  1. javax.persistence.cache.retrieveMode: CacheRetrieveMode  
  2.  

绕过缓存,您将直接从数据库中获取数据。

您使用CacheStoreMode插入或更新到缓存中,在读取数据时从数据库中调取实体数据,如下:

  1. javax.persistence.cache.storeMode: CacheStoreMode  
  2.  

当CacheStoreMode不会强制一个已经缓存的项目时,从数据库中读取刷新的数据。

在刷新、插入或更新到缓存读取数据时,将强制从数据库中读取项目缓存的刷新。

当二级缓存被启用,第一次提取持久性提供的程序将寻找在持久化对象的实体。如果它不容易找到他们,而不是发送查询到数据库缓存中。

这里是JPA的二级缓存优点和缺点:

优点:

◆避免了已经加载对象的数据库访问

◆对于频繁访问的未修改的对象读取更快

缺点:

◆内存消耗大量的对象

◆更新陈旧的数据对象

◆需要对可扩展性差的对象进行频繁更新

◆增加并发代码拼写

二级缓存最好是经常阅读经常修改的数据,而不是至关重要的。

原文名称:JPA 2.0 Cache Vs. Hibernate Cache: Differences in Approach

原文地址:http://www.developer.com/java/

原文作者:Sangeetha S Nitin KL

51CTO译稿,非经授权谢绝转载,合作媒体转载请注明原文出处、作者及51CTO译稿和译者!】


相关栏目:

用户点评