首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

软件资讯设计 工具 系统 开发 安全 办公 陶吧 IT教育 Vista频道 | 下载中心酷我音乐盒 腾讯QQ
天极网 > 开发频道>Java数据对象(JDO)快速入门

Java数据对象(JDO)快速入门

2005-10-08 14:00作者:mydeman编译出处:J2ME开发网责任编辑:方舟

天极软件专题专区精选     到天极软件“读编交流区”畅所欲言
Google专区 POPO专区 QQ专区 QQ挂机 了解Web2.0
Flash MX 视频教程 Photoshop视频教程 网页设计视频教程 照片处理数字暗房
PPT动画演示教程 Excel动画教程集 Word动画演示教程 Windows Vista专区
特洛伊木马专区 黑客知识教程专区 防火墙应用专区 注册表应用专区
Windows API开发专区 网络编程专区 VB数据库编程专区 图像处理与多媒体编程

  持久化Java技术对象到任何关系型数据库都是一项富有挑战性的任务,因为它必须潜心于序列化层次化结构的Java对象到基于表结构的数据库,反之亦然。这个挑战是独一无二的,因为将Java技术对象映射到数据库的列和记录的方式,必须要在速度和效率上同时达到最优化。Java数据对象(JDO)规范,JSR-12,为使用标准的方式来透明地持久化简单Java技术对象和访问数据库定义了API。使用JDO,Java应用程序开发者可以在不使用任何数据库特定代码的情况下编写代码访问底层的数据存储。JDO被设计成在一个企业架构的多重层次中工作,包括Java平台、标准版(Java SE,以前被称为J2SE)、web层和应用服务器。

  本文提供了JDO的指南,它包含了JDO的基本要素,并且提供了使用JDO持久化Java技术对象的示例代码。

  引言

  持久化,在程序退出后信息可以长期保存,在Java语言中可以使用不同的选择完成。最简单的是文件I/O,但是这种方式不适合在企业级存储中使用(原因很明显)。其它的选择包括以下几种:

  ·序列化(Serialization):API简单,不支持查询、多用户共享、事务处理和局部数据读取或更新。另外,它不适合大容量数据存储。

  ·JDBC软件:具有完全访问的SQL数据的功能。JDBC要求开发者必须显式地管理字段值以及把它们映射到关系数据库的表。在这种情况下,开发者必须熟悉另外一种开发语言(例如,查询语言SQL)。

  ·EJB架构容器管理持久性(CMP):作为Java企业级平台(Java EE,以前被称为J2EE)组件模型的一部分,CMP为EJB容器提供了一种简便的对象持久化服务。然而,它不是一种对于Java平台的普通持久化工具。

  一种可行的选择是JDO API,它提供了一种标准的方式,使用Java技术完成对象的持久化,通过结合XML元数据和增强的字节码简化了开发复杂性和降低开发成本。

  JDO架构

  高级的JDO API为开发者透明地存储数据提供了接口,开发者不必为每一种新的持久化数据存储而学习一种新的数据库访问语言(例如SQL)。JDO也可以使用低级的API(例如JDBC)来存储数据。它使开发者可以编写Java代码透明地访问底层的数据存储,而不需要使用数据库特定代码。JDO在JCP的项目中作为一个JSR开发:JDO1.0,从2002年开始存在,是JSR-12;JDO2.0,2005年初被核准并且正在开发中,是JSR-243。

  JDO2.0是一个适合于简单Java对象(POJOs)持久化特点的JSR规范,很多厂家都在提供竞争性的实现。另外,很多厂家很可能在同一个的产品中实现JDO2.0和EJB3.0。这就允许你同时使用两种API,为你提供了逐渐迁移到EJB3.0 POJO的简单方法,将会变为持久化模型的选择。

  JDO架构(如图1所示)的两个主要目的就是,为Java应用程序开发者提供透明地以Java技术为核心的访问持久化信息的方式,使数据存储的可插入式实现集成到应用服务器中。

JDO架构

图1 JDO架构

  请注意,JDO没有定义数据存储的类型:你可以使用同样的代码持久化的你的Java对象到关系型数据库、对象型数据库、XML和任何数据存储。

  使用JDO的好处主要包括以下几点:

  ·简便性(Portability):使用JDO API编写的程序可以在不同开发商的多种可用的实现上运行,不用修改一行代码,甚至不用重新编译。

  ·透明地访问数据库(Transparent database access):应用程序开发者编写代码透明地访问底层数据存储,而不需要使用任何数据库特定代码。

  ·易用性(Ease of use):JDO API允许开发者只需要关注他们自己范围内的数据模型(Domain Object Model,DOM),而持久化的细节就留给JDO实现。

  ·高性能(High Performance):Java应用程序开发者不需要担心数据访问的性能优化,因为这个任务已经委派给了JDO实现,它通过改善数据访问的模式以获得最佳性能。

  ·和EJB集成(Integration with EJB):应用程序可以利用EJB的特征,例如远程信息处理、自动分布式事务协调和贯穿整个企业级应用使用同样的DOMs实现安全性。

  使用JDO,vs. EJB和JDBC

  JDO并不意味着要取代JDBC。它们是两种以各自独一无二的能力互相补充的技术,具有不同技术背景和开发目的开发者可以使用二者中的一个。例如。JDBC通过直接的数据库访问控制和缓存管理,提供给开发者更大的弹性。JDBC是一种在工业界被广泛认可的成熟技术。另一方面,JDO,通过隐藏SQL提供给开发者更大的简便性。它将Java平台开发者从必须熟悉或学习SQL中解脱出来,而将精力集中在DOM上,同时JDO管理在持久存储中对象存储的字段到字段的细节。

  JDO被设计成EJB的补充。CMP为容器提供简便的持久化,而JDO可以以两种方式集成到EJB中:(1)通过会话Bean,它含有JDO Persistence-capable类(会话Bean的持久化助手类)用来实现依赖对象;(2)通过实体Bean,它含有被用作BMP和CMP代理的JDO Persistence-capable类。

  你可以学习更多关于JDO和JDBC之间的关系,还有EJB2.0 CMP和JDO之间的关系。

  POJO之路

  JDO和EJB之间在持久化模型上显著的差别曾经在开发者中间引起了混乱。作为回应,Sun微系统正领导一个社区项目为Java技术社区创建POJO持久化模型。这个项目在JSR-220的赞助下执行,由Linda DeMichiel领导。JDO2.0(JSR-243)的专家组成员被邀请加入到EJB3.0(JSR-220)专家组中。

  创建POJO持久化模型的目的是为所有使用Java SE和Java EE平台的Java应用程序开发者提供一个对象—关系(object-relational)映射工具。值得注意的是Oracle正以co-specification lead的身份加入到Sun EJB3.0。EJB3.0的公众评论草案已经可以得到。

  JSR-243(JDO2.0)遵循了那些来自于JSRs220和243规范的领导写给Java技术社区的信件所描述的轮廓。

  JDO2.0并不打算作为EJB3.0持久化特定API的集中,而是作为JDO1.0.2的发展。但是JDO的POJO持久化模型和EJB3.0之间的类似处,使得JDO的客户当使用JDO2.0满足立即的需求时,可以很容易的接受EJB3.0持久化模型。另外,JSR-243打算将JDOQL用作一种关于EJB3.0持久化数据的可选查询语言。这种语言了已经被更新从而可以更好地对EJB3.0使用。

  要了解更多关于持久化模型的知识,请查看EJB/JDO持久化FAQ。

  JDO Class类型

  在JDO中一共有三种类型的类:

  ·Persistence-capable:这种类型代表那些实例可以被持久化到一个数据存储中的类。请注意,这些类在JDO环境中被使用之前,需要通过JDO元数据规范进行加强。

  ·Persistence-aware:这些类操纵persistence-capable类。JDOHelper类包含了一些方法,它们允许询问一个persistence-capable类的实例的持久化状态。请注意,这些类使用最小化的JDO元数据加强。

  ·Normal:这些不可被持久化,并且对持久化一无所知。另外它们不需要JDO元数据。

关注此文的读者还看过:

返回开发频道首页

共2页。 12下一页

软件频道最新更新

热点推荐

IT嘉年华

编辑推荐

软件下载

热门
推荐

网友关注

软件
资料
游戏

装机推荐

文章排行

本周
本月
最新更新
天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络