免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2435 | 回复: 2
打印 上一主题 下一主题

选择JDO还是CMP? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-28 12:21 |只看该作者 |倒序浏览
由孙宾译自http://www.onjava.com/pub/a/onjava/2003/05/21/jdo.html

作者:David Jordan 和 Craig Russell
著有《Java Data Objects》一书
2003年5月21日

  作者注:JDO和CMP方式的EJB目前正在同时向前发展,但采取的是不同的路线。JDO的核心思想是在企业应用软件架构的不同层面中存储传统的Java对象(Plain Old Java Objects,下称POJOs),而CMP方案则基于容器环境,并针对特殊的需求。

  两者之间的异同在规范出台之初便成为众所争论的话题。你可以到JDOCentral.com上看到这类的争论,而在6月中旬即将在旧金山开幕的2003年JavaOne大会上,也会有一些演示和讲解来比较这两种不同的技术。

  在这次JavaOne大会上,3368号技术对话将讨论JDO与Struts(一个著名的Web应用架构设计的开源软件)集成的可行性和实践经验;3236号专题研究JDO与EJB容器的结合;1289号专题将对比使用JDO、JDBC和EJB时,设计模式在开发中的应用。

  在我们的《Java Data Objects》的第17章有一小段话描述使用JDO和CMP的平衡点。--Craig Russell



JDO还是CMP?
  在你对项目开发策略下决定之前,CMP实体Bean和JDO都是值得考虑的方式。

  JDO对粗粒度和细粒度的数据对象设计都很适合,具体在一个应用服务器环境中,一般用于SessionBean后面。CMP也是用于SessionBean之后,它的远程调用很少直接用到。

  JDO编写的类只须编译一次就可用于分布式架构中的任何一层,并且在集成到Web或应用服务器之前可以以单层或两层的方式先调试好。而CMP只能在发布到一个具体的应用服务器后才能调试。

  JDO没有直接定义远程行为,这一点与Servlet、JSP和EJB组件不同。所有的分布处理、事务和安全方面的策略都基于独立存储管理器,该管理器负责处理你的对象模型中所有的类实例。这一点也说明你可以在分布式环境中的任何层面上使用JDO,而其远程行为由容器来实现,而不是JDO厂商。

  CMP组件提供了较高的可移植性,Bean类及其描述符都是规范化的。多数的不兼容性只存在于规范所未能尽述的地方,包括如何将类映射到具体的数据库(不限于关系数据库)、类似只读类的可选功能、其它方面的厂商扩展。而JDO产品视具体厂商所支持的可选功能而有所不同。

  CMP中,对象之间的关系是受控的,即一端的改变会影响到另一端,并且对应用是可见的。而JDO不支持关系的管理,只是一些厂商以扩展的方式提供类似功能。

  继承是对真实对象建模时常用的概念,但CMP并不支持它。CMP在组件的定义和实现时并不一致,在具体实现一个EntityBean接口时,实现的类可以具有继承关系,但在定义这个EntityBean时却不行。类之间的关系也只是在接口之间,而不是在实现类之间,因此这些关系也不存在多态性。举例来说,一个名为MediaItem的CMP Bean类不能直接联系到名为MediaContent的类,因为MediaContent是抽象的,类并无具体实例。要建立这样的联系,你只能将其转换为两个关系:一个是MediaItem与Movie类,一个是ModiaItem与Game类,并且在每个相关方法中,你必须针对两个关系区别对待。

  在访问对象属性上,CMP和JDO也天差地别。CMP Bean中,所有的属性和对象关系都是作为抽象的get和set方法定义在描述符中,对实际属性的访问只能由具体的由相关工具生成的实现类去完成。而JDO中,可保存的属性和关系在描述符中声明,并且在代码中也可以直接访问这些属性,包括JDO产品生成的代码在内。JDO增强器会在增强时适当地改造这些代码。

  JDOQL和EJBQL都提供了类似的查询数据的方法。两者都可以在程序中查询并访问数据对象,都采取“读-改-写”的策略,都不是完整的数据操纵语言(比如没有数据更新语句),它们都只用于查找数据对象并在代码中访问。

  CMP要求所有的访问操作都在事务环境中,非事务方式的访问不受支持。而JDO允许你决定是否采用事务方式。对需要更新数据的地方,JDO要求采用事务,而只是读取的代码中,包括缓冲在内,JDO支持非事务方式的访问。

  
  David Jordan创立了Object Identity, Inc.,提供Java Data Objects(JDO)的咨询和培训服务。David也是《Java Data Objects》一书的作者之一,另一作者是Craig Russell。

  Craig Russell是Sun微系统公司的JDO规范领导者。

  O'Reilly及其协会最近(2003年4月)出版了《Java Data Objects》。

论坛徽章:
0
2 [报告]
发表于 2003-09-28 12:45 |只看该作者

选择JDO还是CMP?

表 CMP beans与JDO的比较

未命名12.jpg (69.68 KB, 下载次数: 45)

未命名12.jpg

未命名22.jpg (60.71 KB, 下载次数: 44)

未命名22.jpg

论坛徽章:
0
3 [报告]
发表于 2003-10-09 13:43 |只看该作者

选择JDO还是CMP?

小猫好勤快呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP