使用 Apache OpenJPA 开发 EJB 3.doc

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用 Apache OpenJPA 开发 EJB 3.0 应用,第 1 部分: OpenJPA 与 EJB 3.0 2007 年 5 月 24 日 Java Persistence API(JPA)是 EJB 3.0 新引入的数据持久化编程模型,它利用 Java 5 中的注释(Annotation)和对象/关系映射,为数据持久化提供了更简单、易用的编程方式。 本系列 文章将全面介绍其开源实现 — Apache OpenJPA,将为学习 JPA 标准和使用 OpenJPA 进行实际的应用开发提供详细的指南。 本文是系列文章的第一部分,概述了关系型数据库和面向对象之间的阻抗失谐(impedance mismatch),介绍了 EJB 3.0 JPA 标准的相应解决方案,并对 OpenJPA 进行了初步介绍。 关系型数据库与面向对象 几 乎所有的企业应用都需要持久化数据,没有数据持久化需求的企业应用在现在的市场环境下几乎是不可能出现的。由于关系型数据的普及,通常我们提到数据持久化 时,一般指的是将数据持久化到关系型数据库中。关系型数据是一种结构化的数据管理方式,开发者只能通过 SQL 来操作数据库。 Java 语言天生就是一门面向对象的编程语言,在 Java 的世界中,被处理的内容都被组织成一个一个的对象,对象和对象之间存在着继承、引用关系,这样的关系无法通过简单的方式直接反应到关系型数据库中。因此在 关系型数据库与面向对象之间便存在着阻抗失谐(impedance mismatch)。 我们通过一个简单的 例子来说明这种阻抗失谐给企业应用开发者带来的困难。假设在企业应用中存在三个 Java 类:Animal、Fish 和 Dog,其中 Fish、Dog 都是 Animal 的子类。在 Java 世界中,Fish、Dog 都可以被作为 Animal 对象处理。但是如果我们换到关系型数据库中,这三个对象通常都保存在各自对应的表中,假设分别对应 Animal 表、Fish 表和 Dog 表,如果要维护 Animal 和 Fish 的继承关系,我们就需要使用 SQL 的联合查询语句查出 Animal 的所有属性和 Fish 的所有属性,并且使用某种外键进行关联: Select animal.*,fish.* form animal,fish where animal.id = fish.id 从这个简单的例子中我们就可以看出,一个 企业应用开发者需要同时掌握面向对象和关系型数据库的两种思想,而且还必须保证它们之间的映射是正确的,否则无法保证企业应用的正确性,这对于企业应用开 发者是个挑战,因此 Java 社区一直在寻求如何将面向对象和关系型数据库思想简单的统一起来的途径,这方面的努力促进了持久化技术的发展。 回页首 发展中的持久化技术 持 久化是企业应用开发的核心需求之一,最近几年以来,它也成为 Java 社区中最热门的话题之一,在 Java 社区努力解决持久化数据管理的过程中,曾经涌现出了非常多的技术方案试图解决这个问题,从最早的序列化,到 JDBC、JDO、ORM、对象数据库、EJB 2.X,然而这些技术都存在着各种各样的局限,影响他们成为最好的选择。下面我们简单的回顾一下 Java 社区中那些曾经试图为持久化数据管理提供完整解决方案的技术。 序列化 序 列化是最早出现的、管理持久化数据的实现方案,也是 Java 语言中内置的数据持久化解决方案。它的工作原理是将对象转化为字节流,生成的字节流能够通过网络传输或者保存在文件中。序列化非常易于使用,但是局限性也 非常大,由于序列化必须一次将所有对象全部取出,这限制了它在处理大量数据情形下的应用,同时它也无法在更新失败的情况下撤销对对象的修改,这使它无法用 于对数据一致性要求严格的应用中。多线程或者多个应用不能同时并发地、互不冲突地读写同一个序列化数据,也不能提供查询功能。 JDBC 很 多企业应用的开发者选择使用 JDBC 管理关系型数据库中的数据。相对序列化而言,JDBC 克服了很多缺点:它支持处理大量的数据,能够保证数据的一致性,支持信息的并发访问,提供 SQL 查询语言查找数据。不幸的是,JDBC 没有提供序列化所具有的易用性。JDBC 所使用的关系模型不是为保存对象而设计的,因此迫使开发者选择在处理持久数据时放弃面向对象编程,或者自己去开发将面向对象特性(比如:类之间的继承)和 关系型数据库进行映射的专有解决方案。 关系对象映射(Object Relational Mapping,ORM) ORM 是目前完成对象和关系数据表之间的映射最好的一种技术, 这些 ORM 框架处理对象和关系数据库之间的协调工作,将开发者从这部分工作中解脱出来,集中精力处理对象模型。阻碍

文档评论(0)

yan666888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档