作为异军突起的新型语言,java定义了一个标准的运行环境,用户定义的类在其中得到执行.这些用户自定义类的实例代表了真实环境中的数据,包括储存在数据库.文件或某些大型事务处理系统中的数据,而小型系统通常也需要一种在本地负责控制数据存储的机制.
【程序编程相关:聚焦IPv6:技术成熟催生应用普及】 【推荐阅读:阿尔卡特134亿美元并购朗讯 将裁员88】由于数据访问技术在不同的数据源类型中是不一样的,因此对数据进行访问成了给程序开发人员的一种挑战,程序员需要对每一种类型的数据源使用特定的编程接口(api),即必须至少知道两种语言来基于这些数据源开发业务应用:java语言与由数据源所决定的数据访问语言.这种数据访问语言一般根据数据源的不同而不同,这使得学习使用某种数据源的开发成本相应提升. 【扩展信息:IBM提供2万美元折扣 与微软争企业电邮】 在java数据对象技术(jdo)发布之前,通常有三种方式用于存储java数据:串行化(即serialization,也称序列化).jdbc与ejb中的cmp(容控存储)方式.串行化用于将某个对象的状态,以及它所指向的其它对象结构图全部写到一个输出流中(比如文件.网络等等),它保证了被写入的对象之间的关系,这样一来,在另一时刻,这个对象结构图可以完整地重新构造出来.但串行化不支持事务处理.查询或者向不同的用户共享数据.它只允许在最初串行化时的粒度(指访问对象的接口精细程度)基础上进行访问,并且当应用中需要处理多种或多次串行化时很难维护.串行化只适用于最简单的应用,或者在某些无法有效地支持数据库的嵌入式系统中. jdbc要求你明确地处理数据字段,并且将它们映射到关系数据库的表中.开发人员被迫与两种区别非常大的数据模型.语言与数据访问手段打交道:java,以及sql中的关系数据模型.在开发中实现从关系数据模型到java对象模型的映射是如此的复杂,以致于多数开发人员从不为数据定义对象模型;他们只是简单地编写过程化的java代码来对底层的关系数据库中的数据表进行操纵.最终结果是:他们根本不能从面向对象的开发中得到任何好处. ejb组件体系是被设计为支持分布式对象计算的.它也包括对容器管理持续性container managed persistence(参见术语表)的支持来实现持续性.主要由于它们的分布式特性,ejb应用比起jdo来复杂得多,对资源的消耗也大得多.不过,jdo被设计成具有一定的灵活性,这样一来,jdo产品都可以用来在底层实现ejb的存储处理,从而与ejb容器结合起来.如果你的应用需要对象存储,但不需要分布式的特性,你可以使用jdo来代替ejb组件.在ejb环境中最典型的jdo使用方案就是让ejb中的对话组件(session bean)直接访问jdo对象,避免使用实体组件(entity bean).ejb组件必须运行在一个受控(managed,参见术语表)的应用服务环境.但jdo应用可以运行在受控环境中,也可以运行在不受控的独立环境中,这些使你可以灵活地选择最合适的应用运行环境. 如果你将精力集中在设计java对象模型上,然后用jdo来进行存储你的数据类的实例,你将大大提高生产力与开发效率.你只需要处理一种信息模型.而jdbc则要求你理解关系模型与sql语言(译者注:jdo并不是要取代jdbc,而是建立在jdbc基础上的一个抽象的中间层,提供更简单的数据存储接口).... 下一页