- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《J2EE体系结构》 钟凌燕 @ 上海海事大学信息工程学院 第六章:实体bean和永久性简介 J2EE体系结构 本章主要内容 本章内容来源于《精通EJB第三版》([美]Rima Patel Sriganesh著,罗时飞译,电子工业出版社)第6章“实体Bean介绍”,其主要内容如下: 持久化概念 何为实体Bean 实体Bean特点 实体上下文 1. 持久化概念 1.1 O/R Mapping 存储Java对象的流行方式之一是使用传统的RDBMS,比如Oracle、Microsoft SQL Server、MySQL。此种方式下不再对各个对象进行序列化,而是将各个对象进行分解,把各个组成部分分别存储起来。 比如,可以将银行帐号对象存储成RDBMS中的某列数据中,而将存款余额存储到另一列数据中。 借助于JDBC能够将对象数据映射到RDBMS中,在需要的时候,则可以从RDBMS读入数据,创建出新的实例。 将对象映射到RDBMS的技术称为对象-关系映射(Object-Relational Mapping, O/R Mapping),它能实现内存对象同关系数据的相互转换。 O/R Mapping示意图 Java对象到关系数据的映射方式 通过如下两种方式能够完成Java对象到关系数据的映射 通过硬编码实现O/R Mapping 利用RDBMS API(如JDBC)实现 缺点:耗费大量开发、维护成本 借助于O/R Mapping产品,自动完成映射过程(此类方式更为流行) Oracle TopLink Hibernate Sun Java数据对象 (Java Data Objects, JDO) 2. 何为实体Bean 基于OO多层部署的企业应用总可以划分出两种截然不同的组件类型 应用逻辑组件:能够完成具体的业务逻辑,是业务方法的提供者。 例如计算订单价格、给顾客信用卡开帐单、计算逆矩阵 会话Bean就是这类应用逻辑组件 持久化数据组件:能够将Java对象自动存储到持久化存储源中,它们使用某些持久化机制,比如序列化、O/R Mapping,从而将Java对象存储到RDBMS或ODBMS中。 例如银行帐户信息、人力资源数据、客户最新信息等 实体bean就是这类组件 为什么需要引入持久化数据组件? 将数据表示成便于应用处理、管理,而且更为紧凑 可以通过简单的方法对实体Bean所代表的数据进行压缩及其他处理 持久化组件还能够使用到应用服务器中的中间件服务,比如容器管理关系、事务、通过网络访问它们、安全性等。另外, 可以缓存它们,以提高应用的性能。 实体Bean是持久化数据组件 实体bean实例包含以下含义 持久化数据的Java表示 通过修改内存中的Java对象可以改变数据的取值 可以将修改后的数据保存到存储源中,从而更新RDBMS中的物理数据。 实体bean的构成文件 EJB组件含有的文件,实体Bean也同样不会缺少:远程接口、本地接口、Home、本地Home、企业bean类、部署描述符。 实体bean同其他 EJB组件类型存在如下重要区别 企业bean类:它能够映射到RDBMS模式中的某个实体。 实体bean实例就是表中的某条记录 它还能够暴露若干简单方法,比如更新银行帐号余额等 主键类:它使得区分实体bean实例成为可能。 主键也是Java对象,它能够含有若干属性。 为了惟一标识不同的实体bean实例,必须提供主键 3. 实体Bean特点 3.1 实体bean在失败中幸免 实体bean是持久化对象,它能够长期存在。即使出现了不可恢复的失败(比如应用服务器瘫痪、数据库瘫痪),实体bean还是能够存活。 实体bean比客户会话的生命周期要长,数据库中记录存活的时间决定了实体bean实例的生命周期。 3.2 实体bean实例是RDBMS视图 从使用实体bean组件的角度考虑,可以认为内存中的对象同RDBMS中的数据是一样的。 一旦应用更新内存中的实体bean实例,RDBMS中的数据能够立即自动地进行更新。 EJB容器需要提供某种机制实现数据在Java对象和RDBMS间的自动传输。 ejbLoad():从持久化存储源中读取数据,并存储到实体bean中 ejbStore():将当前实体bean实体的值保存到RDBMS中。 由于EJB容器会随时调用ejbLoad()和ejbStore()方法,开发者不用考虑java对象同步底层RDBMS的问题。 3.3 不同实体bean实例可能代表了同一RDBMS记录 通常情况下,为了满足大量并发客户访问同一数据的要求,允许多个客户共享同一实体bean实例。但对于EJB而言,这是行不通的。其原因如下 为实现实体bean实例服务多个并发客户,必须保证实体bean实例是线程安全的,但这一点是很难的 底层事务系统几乎
文档评论(0)