正 文

Hibernate 3.0 的Formulas编程


www.7dspace.com  更新日期:2005-9-29 1:39:27  七度空间


  Hibernate 和Spring是越来越多的J2EE应用程序使用的两个突出的开源框架。虽然他们面向的是不同问题,但是他们都有共同的关键特征:依赖注射。在返回对象给客户之前,Spring建立对象之间的依赖关系,这样减少了在使用这些对象的客户中的大量代码。Hibernate专门在返回一个完整的对象模型给客户之前挑选出数据模型和对象模型之间的依赖关系。当直接使用JDBC来映射数据模型到对象模型的时候,我们通常需要写大量的代码来建立对象模型。Hibernate减少了这部分这样的编码工作。

  Hibernate2.x 提供了基本的表到表的映射,正常的关联映射(包括一对一,一对多,多对多关系),多态映射,等等。Hibernate3.x通过formula, filter, subselect来增强映射的灵活性,把这些映射提个到另一高度。

  在本文中,我们将要向你展现formula的各种特征是如何辅助模式转换的。在Hibernate3.x之前,formula的属性仅仅出现在一个property元素中。Hibernate3.x在保持原来用法的同时,还提供了一个formula的属性或元素(两者在formula的使用方面都是等价的),能够用于任何元素中,包括discriminator, many-to-one, one-to-one, element, many-to-many, map-key, map-key-many-to-many, 和 property。这将给对象关系映射(O-R)增加非常大的灵活性,并且可以对复杂的数据模型进行更加精致的解释。

  两种必须使用formula的主要情景是:

  1.需要使用formula计算结果的情形。带有元素discriminator, element, map-key, map-key-many-to-many, 和 property的formula归为这一类。

  2.需要使用formula来进行连接操作的情形。在元素many-to-one, one-to-one, 和 many-to-many中使用的formula归为这一类。

  第一类:通过公式计算结果

识别器

  在实际的数据模式中,常常存在使用一个表来描述另一个表的情况。formula能够有助于在O-R映射中提供灵活的多态。

  在图1例子中,有两个表Product和ProductRelease。每一个Product的记录都在ProductRelease有一个ProductReleaseID的引用,包括产品发布名称,类型,发行日期等。

image
图1.产品和产品发布数据模型

  在表ProductRelease中有一个让人感兴趣的属性是SubProductAllowable,它的值要么是0,要么是1。值1就意味着这个产品发布下的任意产品允许有子产品,而值0则意味着不允许这样的子产品。例如,一些产品是从多个子产品装配而来的,而另一些产品,他们单独地成为独立的单元。

  图2展现了一个解释这种数据模式的对象模型。Nested的接口定义了getSubProducts和setSubProducts方法。类NestedProduct扩展了基类Product,也实现了接口Nested。产品数据记录是一个Product还是一个NestedProduct,依赖于产品相应的产品发布记录的域SubProductAllowable的值。

image
图2.产品和产品发布对象领域模型
4页,页码:[1] [2] [3] [4] 

上一篇:小规模DDoS(拒绝服务)用Freebsd+IPFW搞定
下一篇:Windows Server 2003组策略排障六法
作者:Dai Yifan  来源:matrix ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐