`

为什么要使用JDO

阅读更多

http://www.wangchao.net.cn/bbsdetail_1480636.html

网上关于JDO的文章已经不少了,关于JDO的优点也讲了很多,我看了一些文章后,自己也研究了一段时间,忽然很想写一个系列文章全面的介绍一下JDO,今天先写下第一篇算是个开头。呵呵,有些内容是我对JDO规范的理解,如果有不对的地方请大家指正。
  Java开发人员已经有好几种存取数据库的方法:序列化,JDBC,面向对象映射工具,对象数据库,以及实体EJB。那为什么还要介绍其他的存储架构呢?答案是,上面每一种实现存储的方案都存在一定的限制。JDO正在尝试解决这些限制。
   序列化 是Java建立的一种传输机制,它能够把对象的信息转换成一系列的字节码,这些字节码可以可以被传输到网络或者存储到一个文件中。序列化的使用非常简单, 但他还是有限制的。它必须立即存取对象的特征,而且它不适合存取大批量的数据。在它更改一个对象的属性时如果有错误发生他不能回滚错误的修改,因此不适于 应用程序的数据完整性要求。多个线程或程序不能同时互不干扰的读写序列化数据。所有这些不足是的序列化无法满足大多数数据存储要求。
  许多程序员使用 JDBC
   API来操作关系数据库。JDBC克服了许多序列化中存在的缺点:它可以操作大批量的数据,有确保数据一致性的机制,支持信息的并发存取,可以使用已经 非常成熟的SQL语言。不幸的是,JDBC使用起来并不像序列化那么简单。JDBC使用的关系范例不是被设计用于存储对象的,因此,它迫使你放弃代码中使 用面向对象程序存储数据的可能。
  由软件厂商创建的架构可以为你实现对象和关系数据库之间的映射。 这种对象-关系映射支持可以是的你专注于对象模型的设计而不必关心面向对象和关系数据库之间的匹配。不幸的是每一种对象-关系映射支持都有一套他自己厂商 实现的API。你不得不使自己的代码迁就某一个单独厂商的实现。假如这个厂商提高价格或者停止对bug更改的支持,如果你想用其他的厂商实现架构时,你就 不得不重写你的代码。
  比对象关系数据库映射更好的是,一些软件厂商开发了一种新的存储对象到数据库的方法。这种对象数据库使用起来常常比对象 关系映射软件简单。ODMG组织成立的目的就是创建一个访问对象数据库的标准API。一些厂商也尊崇ODMG组织的要求,因此由于厂商实现不同带来的麻烦 也解决了。一些公司对于从关系数据库转向对象数据库显得犹豫不决,因为有大量的数据存储在传统的关系数据库中。个别数据库分析工具可以用于对象数据库,然 而大量的数据存储使用的仍然是关系数据库。由于这些原因,对象数据库被很好的利用。
  Java平台的企业级应用中引入了实体EJB。 实体EJB是一个组件,他描述了数据库中的持久性数据信息。EJB使用类似于“对象-关系”映射的办法,它提供了一个持久性数据的面向对象的表示。不同于 对象关系软件,EJB对于关系数据库没有限制;它描述的持久性信息可以来自一个企业信息系统(EIS)或者其他的存储设备。而且,EJB使用了一个严格标 准,实现它的厂商必须遵循这个标准。不幸的是,EJB标准在面向对象方面稍微有些欠缺,比如一些高级的特性:继承、多态和复合关系等。另外,EJB的代码 编写很复杂,而且它是一个重量级组建需要消耗应用服务器很很多的资源来运行。但是,EJB中的会话Bean和消息驱动Bean有很多优势,所以JDO规范 详细定义了JDO如何与他们进行集成。
  JDO集成了很多上述持久性机制的特性,这使得在JDO中创建一个持久类就像创建一个序列化类一样简 单。JDO还支持批量数据的存储,数据一致性,并发处理和JDBC的查询功能。就像“对象-关系”映射软件和对象数据库一样,它允许使用面向对象的高级概 念,比如“继承”。它避免了像EJB中实体Bean一样必须依赖于来自厂商定义的严格规范的限制。像EJB一样,JDO也不限定任何特定的后端数据库。
  但是,这里还是要说一下,世界上从来就没有“万灵丹”。所以,JDO并不是对于每一个应用程序都是有好处的。很多应用程序完全可以使用其他更理想的存储机制。

分享到:
评论

相关推荐

    jdo-java数据对象

    另一选择是Enterprise JavaBeans(EJB),尤其是实体EJB,它为分布式计算环境提供了完整的组件模型,包括持久化服务,但EJB的使用相对复杂,且对资源需求较高。 比较其他存储解决方案,如序列化、面向对象映射工具...

    JDO使用手册

    ### JDO 使用手册知识点概述 #### 一、JDO简介 Java Data Objects (JDO) 是一种用于管理和操作持久化对象的标准API。它提供了一种简单而强大的方式来处理对象到数据库之间的映射,适用于各种数据库环境。JDO的目标...

    全面了解jdo数据库编程

    4. **数据独立性**:JDO设计为数据存储无关,这意味着你可以使用JDO与任何支持的数据库系统交互,而无需更改代码。 5. **持久化工具**:一些JDO实现如Apache’s Kodo、DataNucleus和Hibernate的JDO模块提供了更丰富...

    jdo2-api jdo2-api

    jdo2-api jdo2-api jdo2-api jdo2-api

    JDO原理及开发实现

    什么是JDO JDO 是一种ORM(对象关系映射)框架,它提供了一组接口和类,使得Java对象可以直接存取数据库,而无需编写SQL语句。通过JDO,开发人员可以将Java对象的状态保存到关系数据库中,并在需要时恢复这些状态...

    全面了解JDO第一部分

    要全面掌握JDO,你需要理解其基本概念,熟悉如何配置和使用`PersistenceManager`,以及如何编写和管理`PersistenceCapable`类。此外,学习JDO的查询语言(JDOQL)也是至关重要的,它允许你在Java代码中直接进行复杂...

    全面了解JDO第四部分

    通过熟练掌握JDO,开发者可以提高开发效率,减少代码维护成本,特别是在处理大量数据和复杂数据关系的场景下,JDO的优势尤为明显。 总之,全面了解JDO意味着要熟悉其基本概念、API用法、元数据配置、查询语言以及...

    JDO原理及开发.doc

    2. **对象查询**:通过`PersistenceManager`的`query()`方法构建查询,使用JDOQL(JDO Query Language)进行对象检索。 3. **对象更新**:对持久化对象进行修改后,调用`PersistenceManager`的`flush()`方法,将变更...

    全面了解JDO数据库编程.rar

    持久化类是普通的Java类,通过添加JDO注解来标识为持久化对象。这些注解如`@Persistent`定义字段的持久性,`@PrimaryKey`定义主键,`@Version`用于实现乐观锁等。 4. **数据存储配置** 开发者可以通过XML配置文件...

    jdo API 2.2

    总之,JDO API 2.2为Google App Engine的开发者提供了一个强大且灵活的持久化框架,使得与数据存储服务的交互变得更加容易。通过深入理解和熟练运用JDO API,开发者能够构建出高效、可靠的分布式应用程序。在apidocs...

    jdo-tutorial.pdf

    本文档提供了一个关于如何使用 JDO 和 Eclipse Devtool 插件进行简单持久化操作的介绍。通过这个例子,我们可以了解到如何安装必要的工具、配置 JDO 提供商以及实现基本的数据持久化。JDO 是一种强大的对象持久化...

    jdo2-api-2.3-ec hive hdfs 所需jar

    JDO的使用简化了Hive的开发和维护,使得数据存储和查询的逻辑更加清晰。 三、HDFS与JDO的结合 HDFS是Hadoop分布式文件系统,用于存储大规模数据集。虽然HDFS本身不直接支持JDO,但在某些场景下,通过中间件或自定义...

    jdo2-api-2.0

    这可以通过XML文件(通常名为`jdo.xml`)或使用注解完成。元数据定义了对象的字段如何对应到数据库表的列,以及如何处理关系等。 4. **Persistence Manager**:JDO的核心组件是`PersistenceManager`,它是与数据...

    jdo-api-3.0.1-API文档-中英对照版.zip

    赠送jar包:jdo-api-3.0.1.jar; 赠送原API文档:jdo-api-3.0.1-javadoc.jar; 赠送源代码:jdo-api-3.0.1-sources.jar; 赠送Maven依赖信息文件:jdo-api-3.0.1.pom; 包含翻译后的API文档:jdo-api-3.0.1-javadoc-...

    JDO原理及案例开发

    - BEA WebLogic JDO:BEA Systems(现Oracle)提供的JDO实现,专为WebLogic Server设计。 ### 3. 开发流程 开发JDO应用的基本步骤包括: - **设计数据模型**:定义Java类作为数据模型,通常继承自`javax.jdo....

    JDO上实践

    在"JDO上实践"的主题中,我们将深入探讨如何在实际项目中使用JDO来处理数据持久化。 首先,理解JDO的基本概念至关重要。JDO定义了一个API,通过这个API,Java对象可以被透明地存储、检索和管理。这些对象被称为持久...

    datanucleus-api-jdo-3.2.6-API文档-中文版.zip

    赠送jar包:datanucleus-api-jdo-3.2.6.jar; 赠送原API文档:datanucleus-api-jdo-3.2.6-javadoc.jar; 赠送源代码:datanucleus-api-jdo-3.2.6-sources.jar; 赠送Maven依赖信息文件:datanucleus-api-jdo-3.2.6....

    Struts2,Spring,JDO,AJAX on GAE

    开发者可以使用JDO API来操作GAE的Datastore,实现数据的存储、查询和更新。GAE的Datastore是一个NoSQL数据库,具有高可用性和可扩展性,适合大规模分布式应用。 4. AJAX:AJAX是前端技术,通过JavaScript异步地与...

    spring-jdo.jar

    对JDO 1.0/2.0的支持。外部依赖spring-jdbc, JDO API, (spring-web)。

Global site tag (gtag.js) - Google Analytics