JPA 2.0 Vs Hibernate:缓存方法的差异(二)

原创
开发 后端
JPA 2.0 Vs Hibernate:缓存方法的差异(二),本文为developer.com的Java频道7月12日的头条新闻的第二部分:继大家讲述JPA 2.0(Java Persistence API)的缓存方法之后51CTO将为大家Hibernate缓存原理。

【51CTO独家编译】在前文中我们把JPA 2.0缓存原理进行了简单的介绍,本文将为大家介绍一下Hibernate缓存原理。(51CTO编辑特别推荐专题:Hibernate应用开发教程

Hibernate缓存原理

Hibernate也设有两个级别的缓存:第一级和第二级缓存。第一级缓存是存储在一个特定时域实例里的查询结果,而第二级缓存则是与SessionFactory实例相关联。

Hibernate的默认使用的第一级缓存来存储每一此运算的对象。 Hibernate的二级缓存是由SessionFactory支持,根据访问对象的应用水平来调用访问数据库需要的对象次数,从而减少了访问次数。Hibernate的缓存不是通过储存存储对象本身的实例来实现的。

Hibernate 3.0支持以下四个开源项目的第二级缓存实现:

◆EHCache (org.hibernate.cache.EhCacheProvider) -- Default

◆OSCache (org.hibernate.cache.OSCacheProvider)

◆SwarmCache (org.hibernate.cache.SwarmCacheProvider)

◆JBoss TreeCache (org.hibernate.cache.TreeCacheProvider)

第二级缓存可以启用分别设置属性hibernate.cache.use_second_level_cache为正确或错误。这里是一个设置实例:

  1. <property name="hibernate.cache.use_second_level_cache"> 
  2. true  
  3. </property> 

你可以选择在hibernate.cfg.xml文件里的hibernate.cache.provider_class属性应用进行设置,这里是另一个设置实例:

  1. <property name="hibernate.cache.provider_class"> 
  2. org.hibernate.cache.EhCacheProvider  
  3. </property> 
  4.  

您也可以在类级层或集合层通过设置在映射文件作为<cache>组成部分启用缓存:

  1. <cache usage="read-only" region="regionName" include="all"/> 
  2.  

这里有一个在上面的代码中的组成部分:

◆指定缓存策略的使用情况。

◆指定二级缓存区域。

◆包括是一个可选属性(一般情况下为默认设置),如果数据不常使用可以取消缓存。

您还可以通过设置hibernate.cfg.xml文件中的<class-cache>和<collection-cache> 内容配置为缓存,在一个单独的EhCache配置文件(ehcache.xml)和项目的根目录里启用缓存。

您可以执行的缓存是同一组的参数经常使用的查询缓存。查询缓存设置为false默认情况下,您可以启用hibernate.cfg.xml文件中加入下面的属性:

  1. <property name="hibernate.cache.use_query_cache">true</property> 
  2.  

此查询添加StandardQueryCache和UpdateTimestampsCache,分别为查询缓存的结果和最新更新的时间表。查询结果可以通过调用缓存特定的setCacheable查询。

Hibernate 3.5缓存

Hibernate 3.5缓存策略与Hibernate的缓存策略是相同的,同时添加了在Hibernate 3.2和Hashtable没有的某些如JBoss Cache 2、JBoss Cache的1.x中缓存策略。

Hibernate 3.5另一个重大进步是Infinispan作为另一个二级缓存标准加入。Infinispan是一个开源、可扩展的数据网格平台,公开了JCache(支持JSR-107)兼容的缓存接口。 Infinispan提供了更高程度的并发性,因为Infinispan使用一个专门的数据结构,而不是仅仅捆绑到Java,同时它也支持PHP,Python和Ruby等。

结论

在本文中,我们比较的JPA 2.0缓存在Hibernate的缓存。通过引入新的缓存功能,促进标准化,JPA的2.0做了很多工作使得开发更容易。不过,因为所有的功能都有了很长时间的支持,Hibernate是在许多方面遥遥领先。

【编辑推荐】

  1. JPA 2.0 Vs Hibernate:缓存方法的差异(一)
  2. JPA与Hibernate的优缺点
  3. JPA重整ORM山河
  4. 浅析Hibernate EntityManager
  5. 讲解Hibernate核心API
  6. 简述Hibernate ORM是什么

 

责任编辑:佚名 来源: 51CTO译文
相关推荐

2010-07-12 17:12:37

JPA 2.0缓存Hibernate缓存Java EE

2009-06-01 12:11:31

hibernatejpa复合主键

2009-06-17 15:52:23

Hibernate查询

2009-06-18 15:24:35

Hibernate二级

2009-06-19 18:36:15

JPAHibernate

2021-10-06 23:31:45

HibernateJPASpring Data

2012-02-03 11:31:33

HibernateJava

2009-09-21 14:59:31

Hibernate二级

2009-09-24 11:04:56

Hibernate二级

2009-09-23 09:37:07

Hibernate缓存

2009-06-29 08:48:41

Hibernate缓存

2009-09-22 10:50:04

Hibernate c

2009-09-21 14:39:40

Hibernate二级

2009-09-21 13:31:10

Hibernate 3

2009-06-10 15:00:58

Hibernate二级配置

2021-07-28 09:00:00

编程语言Kotlin开发

2009-09-25 10:25:54

Hibernate缓存

2009-09-25 13:51:13

Hibernate S

2009-06-18 14:51:12

Hibernate缓存Hibernate

2009-06-17 15:43:03

Hibernate缓存
点赞
收藏

51CTO技术栈公众号