Hibernate 3.3主要的新特性包括

<!----><!----><!----> <!---->

 

Hibernate 3.3 主要的新特性包括:

  • 重新设计、模块化 JARs—— 现在有很多定义良好的 JARs ,而不是一个大的 JAR 文件 —— 这使得用户可以轻松了解依赖关系并将其最小化,同时还使得组织可以定制 Hibernate ,移除不需要的部分
  • 基于 Maven 的构建 —— 现在 Hibernate 使用 Apache Maven 构建系统进行构建
  • 修补的缓存 SPI —— 根据反馈重构了缓存系统以对不同的缓存区域的特性进行精细控制
  • JBoss Cache 2.x 分布式缓存 集成 —— 基于新的缓存 SPI ,现在可以轻松集成 JBoss Cache 2.x

<!---->·         <!---->Ebersole 还详细说明了新的缓存系统和 JBoss Cache 集成:

<!---->·         <!---->SPI 的主要变化围绕着如何在特定目的下构建缓存区域而展开。基本上 Hibernate 需要缓存区域完成四个不同的目的: 实体数据、集合数据、查询结果及时间戳更新。以前的 SPI 试图以单一方式处理这些不同类型数据;本质上它试图以普遍的方式来对待数据缓存而不管所存储数据 的特性。但是在实践中我们发现很多时候缓存集成器需要考虑到那些不同特性。例如在集群缓存中,让实体和集合数据及查询和时间戳更新区域同时失效或许很有意 义。如果不基于区域名称采取一些手段的话,以前的 SPI 是不可能处理这种混合匹配的。新的 SPI 使这些区别变得清晰明了。例如有一个叫做 “buildEntityRegion” 或者 “buildCollectionRegion” 的方法,那么缓存集成器就可以确定特定区域的数据类型是可以持有并构建一个恰当的配置好的缓存 / 区域的。

<!---->·         <!---->JBossCache 2.x 集成现在是直接使用新的 SPI 的唯一的缓存集成(其余的使用了连接新式和旧式 SPI 的桥,现在已不建议使用了)。同样,它充分利用了我上面提到的那 些区别以使得用户可以为不同区域定义不同行为。 JBossCache 2.x 相对于 JBossCache 1.x 来说有两个具体的改进有助于 Hibernate 的使用。第一个是增加了 “putForExternalRead” 过程。当使用 JBossCache 1.x ,我们在从数据库读取数据并将其放到 JBossCache 区域中,有时会遇到性能问题,甚至还会发生死锁。情况是这样的:当我们尝试将只读数据放到 节点上时, JBossCache 需要一个写锁,尽管整体操作的语义需要的是一个读锁。然后该写锁阻塞了其他事务。 JBossCache 2.x 引入了一个针对该用例而特别设计的方法,集成时就使用了该方法。

从使用 Hibernate 的角度来看 JBossCache 2.x 中其他重要的改进就是它使用乐观锁更好地管理集群中无效的节点。最大的改变就是有一个 碑石( tombstone 来检查无效的实体,这样后面如 果尝试往缓存中的该实体进行写入操作时就会知道无效的版本是什么并且还会执行一个恰当的版本检验。对于 Hibernate 来说无效是非常重要的,因为这是 最有效的运行集群实体缓存的方式。

JBoss Cache

JBoss Cache 提供两种缓存方式:核心缓存和 POJO 缓存。

核心缓存会直接把您传递给它的数据存储在一个树型结构中。键/值对被存储在树的节点上,出于复制或持续性的需要它们都被序列化了。

POJO
缓存则采用比较复杂的机制 —— 利用字节码编织来内省( introspecting )用户类,并向用户类的域添加侦听器,一旦域值有任何变化,侦听器会立刻通知缓存。例如,如果要在 POJO 缓存中存储一个庞大、复杂的对象,会导致 POJO 缓存内省对象的字节码,最终只把该对象的原始域存储到树结构中。一旦域值有所变化,缓存只复制这个改变了的域值而不会去复制整个用户类,这是高效的细粒度复制。

 

hibernate-annotations

1 spring orm support
与原来使用 LocalSessionFactoryBean 相比,变动不大( AnnotationSessionFactoryBean 本来就是从 LocalSessionFactoryBean 类继承过来的嘛)

 1      < bean
 2            id ="sessionFactory"
 3           class ="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
 4           parent ="AbstractSessionFactory">
 5           < property  name ="annotatedClasses">
 6               < list >
 7                   < value > xxx.xxx.xxx.domain.Account </ value >
 8               </ list >
 9           </ property >
10       </ bean >
11       < bean
12            id ="AbstractSessionFactory"
13           class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
14           abstract ="true">
15           < property
16                name ="dataSource"
17               ref ="DataSource"   />
18           < property  name ="hibernateProperties">
19               < props >
20                   < prop  key ="hibernate.dialect"> ${hibernate.dialect} </ prop >
21                   < prop  key ="hibernate.show_sql"> ${hibernate.show_sql} </ prop >
22                   < prop  key ="hibernate.hbm2ddl.auto"> ${hibernate.hbm2ddl.auto}

<!----><!----><!---->

你可能感兴趣的:(数据结构,maven,bean,Hibernate,jboss)