仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 533|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA网站制作之J2EE 探险者:耐久数据办理,第 1 部分...

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:24:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。j2ee|数据J2EE平台为办理企业数据耐久性供应了一组丰厚的选项,但怎样选择合适于您系统布局的选项呢?KyleGabhart先容了J2EE最好的数据耐久性手艺―实体bean、JDBC和JDO―并在几个分歧情况中对照它们。
数据耐久性是企业开辟中最辣手的一个方面。一个企业数据耐久性办理计划必需供应敏捷的客户机事件,跟着工夫的已往确保数据完全性,和在如体系溃散和收集妨碍之类的一样平常灾害产生时使数据持续存在。在J2EE探险者系列接上去的两个部分中,我们将侧重会商J2EE手艺,这些手艺有助于您为企业系统布局创立牢靠的数据耐久性办理计划。我们将经由过程扼要地先容企业使用程序中的数据耐久性来入手下手该主题,然后持续更具体地会商各类手艺选项。在本部分中,我们将对照实体bean的一站式(single-stop)办理计划同更庞大的(但更强健的)会话bean与Java数据库毗连(JavaDatabaseConnectivity,JDBC)代码的组合。鄙人一部分中,我们将对照Java数据对象(JavaDataObject,JDO)与实体bean。

甚么是数据耐久性?

数据是任何盘算机使用程序最主要的方面。盘算机使用程序的中心是使或人或另外一个盘算机体系可以会见其数据。在企业情况中,数据不但必需是可会见的(即,与用户界面毗连并按一系列营业划定规矩办理),并且还必需是耐久的。耐久数据存储就是即便在服务器溃散的情形下仍能存在的数据存储。

耐久数据存在于使用程序的举动内存以外,一般在数据库或立体文件体系中。固然耐久数据被读进瞬时存储器以供利用或修正,但它一直被写到内部数据存储中以临时存储。美国国度尺度与手艺研讨所(TheUnitedStatesNationalInstituteofStandardsandTechnology)(请参阅参考材料)界说了三种级其余耐久数据:

部分耐久数据是一种仅同意对最新版本更新的耐久数据布局。


耐久数据是一种保存其旧版本的数据布局;即,之前版本和以后版本都大概被查询。


完整耐久数据是一种保护其数据的一切版本并同意对这些版本更新的耐久数据布局。
年夜多半营业使用程序最少供应部分耐久数据。这类范例的耐久性在事件中期大概乃至在哀求中期呈现体系妨碍时简单遭损坏,这会招致数据不完全且经常遭损坏。另外一方面,在耐久数据完成中,对体系中止或妨碍以“回滚(rollback)”回应,数据形态被回滚到上一个已知的优秀设置。耐久数据完成在企业系统布局和数据库办理体系(DBMS)中很罕见。完整耐久数据完成十分少见。完整耐久数据完成的多数几个示例有:日记纪录文件体系、VMS文件体系(如VAX和MacOSX)和并发版本把持体系(CVS)。

J2EE中的耐久性

信息时期十分夸大散布式企业盘算平台的利用。在这类平台上,必需不吝任何价值回护数据并使其永久延续存在,即便面对收集妨碍、内存泄露和服务器溃散时,也是云云。为了保护这类耐久性,使用程序组件必需可以处置并发性、毗连办理、数据完全性和同步。J2EE的一切三种数据办理手艺都为开辟职员处置这些功效,但每种手艺在处置时略有分歧。

实体bean,它供应强健的数据耐久性。bean容器处置年夜部分的数据完全性、资本办理和并发性功效,从而使开辟职员存眷营业逻辑和数据处置,而不是这些初级细节。利用bean办理的耐久性(BeanManagedPersistence,BMP)实体bean时,开辟职员编写耐久性代码而容器断定什么时候实行该代码。利用容器办理的耐久性(ContainerManagedPersistence,CMP)实体bean时,容器天生耐久性代码并办理耐久性逻辑。


JDBC,当预会话bean分离时,它可供应烦琐的EJB开辟和与平台有关的部署,而没有象EJB手艺那样的资本利用和内存开支。象BMP实体bean一样,该办理计划请求开辟职员编写耐久性代码。与BMPbean分歧的是,它还请求开辟职员编写耐久性逻辑。因此,开辟职员卖力断定什么时候将数据耐久保存在数据存储中和什么时候从数据存储装进数据。


Java数据对象是最新的耐久性机制。JDO供应了面向对象的耐久数据存储。开辟职员利用POJO(无格局一般Java对象,plainordinaryJavaobject)来装进和存储耐久数据。
我们将在余下的文章中会商实体beanvs.会话bean和JDBC组合的优弱点。

实体bean的长处

谈到企业级数据耐久性时,实体bean有以下长处:

尺度化。EJB标准界说一组与供给商有关的接口,J2EE供给商能够完成这些接口来撑持实体bean。这类尺度化同意接纳最好理论的开辟并延长招聘新开辟职员时的顺应期。由于基础的组件系统布局和计划形式人人都晓得,以是很简单找到及格的人才网来完成它们。


容器办理的服务。正如我们在本系列的前两篇文章中会商的那样,EJB容器办理的服务为处置诸如平安性、事件处置、毗连适用和资本办理之类的企业功效供应了极年夜的优点。


通明耐久性。容器办理的服务头脑在CMP实体bean中失掉了进一步增强。这里,容器还主动办理耐久性语义。利用BMP实体bean时,开辟职员必需编写耐久性逻辑,而容器则断定什么时候挪用由开辟职员界说的办法。同时利用CMP和BMP实体bean时,容器决意什么时候延续坚持bean的形态和怎样确保与底层数据存储的数据完全性和并发性。


事件撑持。开辟职员对CMP事件(断绝级别、事件需乞降办法的包括/扫除)有粗粒度的把持权,对BMP事件有细粒度的把持权,这些把持都是经由过程在bean代码中以程序体例处置事件语义完成的。在这两种情形下,容器办理事件并断定是不是应当提交给定的事件。


基于组件的计划。实体bean被计划成自包括组件,这些组件设置有部署形貌符,无需变动任何代码就能够将它们部署就任何J2EE使用程序服务器。
实体bean的升降
但是,当架构计划师、开辟职员和参谋入手下手利用实体bean时,它的吸引力和魔力就入手下手敏捷消散。在EJB1.1标准失掉普遍完成时,现实标明利用实体bean必需胆小如鼠。固然它们仍代表了数据耐久性的功效壮大的组件-模子系统布局,但它们损耗过量的服务器资本这一点也是世人皆知。EJB2.0标准已减缓了个中一些成绩。固然很多人仍必要从利用EJB1.1实体bean的影响中恢复过去,可是与昔日比拟,实体bean如今变得更可托赖,是一种更可行的办理计划。跟着当地接口呈现、CMP才能失掉增添、J2EE供给商具有更多有关完成EJB标准的履历,实体bean在全部业界再次成为可行的数据耐久性机制。

1999年,当初次引进J2EE和EJB标准时,实体bean被吹嘘为是一种出色的企业组件,它会完全改动企业使用程序的开辟、保护和可移植性。令业界奋发的是实体bean代表了一种没有贫苦的、主动耐久性机制。

总之,实体bean从尺度化和业界最好理论中受害,简化了企业开辟的某些庞大性并供应有目共睹的基于组件的计划。

实体bean的弱点

固然实体bean的确有一个使人印象深入的特征列表,这为它们添色很多,但我们仍是要思索它们的弱点,其弱点以下:

计划庞大。容器办理的服务和主动通明耐久性的价值很高。它们在几个级别上给使用程序计划带来庞大性。起首,为了不收集开支并强迫恪守营业划定规矩,几近老是经由过程会话bean会见实体bean。因而,每一个事件最少触及两个企业bean(常常会多很多)。触及的组件越多,则系统布局的计划、编码和保护就变得越庞大。其次,存在主动操纵本钱。容器有点相似于有魔力的黑盒。只需它以为得当,就会挪用bean回调办法,它可随时选择创立和损坏bean实例,激活和钝化bean,而且将其形态存储到耐久数据存储中或从个中装进。使用程序代码没法把持这些事变产生的体例或工夫。从主动的方面看,容器的功效削减了编写营业逻辑时要思索的成绩数目。从悲观的方面看,容器对装进前提和数据哀求形式的呼应是不成预知的,以是必需在开辟过程当中增加大批的基于计划的装进测试。


较长的构建周期。因为企业bean和(特别是)实体bean的庞大性,以是一次迭代(计划/构建/测试/集成/测试/部署)所花的工夫比可对照的Java耐久性办理计划所花的工夫长两到三倍。


呼应工夫。依据服务器上的负载和所哀求实体bean的绝对巨细,实体bean的查询大概有不达标的呼应工夫。实体bean在实质上受限于bean实例的粒度。要末必需装进全部bean,要末基本没法装进bean。该粒度会促使系统布局变得更庞大,由于独一的选择就是用较差的呼应工夫使bean坚持原样,仍是将数据分红更小的实体,从而使体系系统布局变得更庞大。


资本利用情形。一切企业bean都是资本占领者。实体bean也许是最年夜的占领者。固然这将视利用的使用程序计划形式和供给商怎样无效地计划实在体bean完成而变更,但实体bean仍偏向于损耗大批的服务器资本。
总之,实体bean的弱点是庞大性和较长的构建周期,从而使计划和开辟包括它们的体系变得更坚苦。在临盆中,实体bean因占领资本和对年夜实体的并发哀求呼应极慢而申明缭乱。

会话bean和JDBC

无形态会话bean的受接待水平不象实体bean那样年夜起年夜落(请参阅侧栏)。现实上,在提高和功效方面,无形态会话bean自1999年(昔时刊行了EJB标准)入手下手就一向坚持不乱和牢靠。它们发生功能极佳的了局和无效的资本适用,而且是EJB系列的一个主要事情程序组件。无形态的会话bean的不乱性和可预知性使它们成为办理耐久企业数据的优异候选者。

无形态会话bean经常与JDBC相分离来创立牢靠的耐久数据办理办理计划。鄙人面两节中,我们将权衡该办理计划的优弱点,但我们将不探求这两种手艺自己的细节。假如您必要进修有关无形态会话bean或JDBC的更多内容,请参阅参考材料。

它是怎样事情的
由于会话bean没有一种固有的数据会见机制,以是它们必需利用资本办理器毗连工场。资本办理器是J2EE容器的一个组件,它办理特定范例资本的全部性命周期,包含毗连适用、事件撑持和使实践毗连酿成大概的任何须需的收集协定。毗连工场是用于创立至资本办理器的毗连的对象。EJB标准界说了JDBC、JMS、JavaMail和JCA资本的资本办理器。

在基于会话bean和JDBC的耐久性系统布局中,会话bean将一切会见命令都托付给JDBC层。在吸收挪用时,会话bean利用JDBC来取得完成javax.sql.DataSource接口的对象。然后,前往的对象充任java.sql.Connection对象(由JDBCAPI界说)的资本办理器工场,这些java.sql.Connection对象完成与数据库办理体系的毗连。一旦取得了Connection对象,其他的耐久性代码和营业逻辑(查询、更新、存储历程挪用、了局集扫瞄和事件提交/回滚等等)就是纯JDBC。

会话bean/JDBC的长处

会话bean和JDBC成为处置企业数据耐久性的极佳组合。该组合最受承认的长处以下:

计划复杂。从系统布局计划概念来看,经由过程会话bean来间接处置数据办理比利用实体bean复杂很多。


细粒度的把持。由于会话bean是通用的事情程序组件,以是它们同意开辟职员完整把持全部耐久性历程,包含高速缓存、耐久性、并发性、同步及别的。相反,CMP实体bean不同意开辟职员把持耐久性机制,而BMP实体bean仅使开辟职员可以界说应产生甚么,而不克不及界说应在什么时候或甚么样的情形下产生。


成熟。JDBC存在了七年摆布!而实体bean呈现至今只要三年多的工夫。JDBC的牢靠性和最好理论关于J2EE耐久性机制的开辟来讲是一笔十分可贵的资产。


速率。由于开辟职员完整把持在会话bean中利用的数据会见机制,以是能够针对某些义务优化数据会见和耐久性逻辑。因为间接和有目标的操纵,这能够发生极快的呼应工夫。
总之,会话bean和JDBC的组合能使开辟职员对数据办理语义有细粒度的把持权,这一组合使用强健且成熟的数据办理手艺,撑持功效优化,并将它全体封装成一个绝对复杂的组件系统布局中。

会话bean/JDBC的弱点

到今朝为止都在议论会话bean和JDBC组合的长处,但它也有一些弱点。弱点以下:

完成庞大。固然这类体系的系统布局计划相称复杂,但实践的会话bean完成经常非常庞大。假如使用程序的数据需求相称庞大,那末大概就没法完成办理数据库毗连、确保数据完全性和准确处置事件语义这些关头义务。开辟职员经常必要完成某品种型的高速缓存同时确保最优功能。机关这类高速缓存机制使该体系的开辟和保护进一步庞大化。


非固有的事件性。实体bean实质上是事件性组件,这些组件具有可设置的事件语义;而会话bean没有。将事件语义间接编码到使用程序代码中时,开辟职员必需到处当心以确保每一个功效的营业划定规矩、流把持和事件完全性都得以回护而且能够容错。在实体bean开辟中,这些细节都由容器处置。


耐久性不是主动的大概得不到包管。在实体bean操纵中,容器处置bean形态的耐久性,并确保这类数据失掉回护,供今后利用。关于会话bean,将数据坚持在平安、临时的数据存储中是开辟职员的义务。


总之,与JDBC分离的会话bean蒙受三个关头成绩:bean的完成经常是庞大的;会话bean没有固有的事件性;耐久性机制不是主动的大概得不到包管。

举行挪用

只管另有不敷,J2EE架构计划师已入手下手公布带有原始JDBC挪用的纯无形态会话bean是最平安和最受推许的数据耐久性机制。这并不是次要由于该组合是优于实体bean的办理计划(二者各有所长),实践是由于它有推进力。在实体bean很快锋芒毕露又很快得宠的时分,对会话bean和JDBC的承受水平却跟着工夫的推移迟缓而不乱地堆集起来。

不论以后趋向是甚么,细心地衡量实体bean和会话bean与JDBC组合的长处老是值得的。上面的列表标识了对照这两个数据耐久性办理计划的四个关头方面:

读/写必要。必要常常读取且从不变动或偶然变动的数据最好由会话bean与JDBC组合来处置。开辟事情会复杂间接,并发生极好的呼应工夫。

假如数据必要频仍更新并撑持很多并发哀求(因而有很多并发变动),那末实体bean是固然的选项。在面临数据的并发哀求时,为确保数据完全性、同步和频仍的耐久性而构建一种机制所触及的庞大性几乎太难克制了,并且不值得花工夫和精神来创立它。


事件撑持。CMP实体bean使开辟职员不用体贴事件情况。一切事件细节都在bean的部署形貌符中声明。假如能够承受这一级其余把持,那末CMP实体bean无疑供应了最简单的办理计划。假如必要更多的把持,那末BMPbean同意开辟职员界说应当接纳的操纵,而不用为应当什么时候触发这类操纵来编写营业划定规矩。关于最年夜级其余把持,应当利用会话bean。会话bean会办理触及CMP和BMP实体bean的庞大事件,和多数间接会见数据库的JDBC挪用。


上市工夫。CMP实体bean明显是一切J2EE耐久性机制中独一一个上市工夫最快的。声明数据范例和称号,界说部署设置,然后由使用程序服务器和供给商工具卖力其他部分。很难讲BMP实体bean和会话bean与JDBC组合哪一个能排上第二快的办理计划。一方面,BMP会更快,由于容器正代表bean供应云云多的性命周期服务。而另外一方面,会话bean会抢先,由于它们没有BMP那末庞大,以是构建/测试/部署周期更短。最初,在这三种办理计划针对您的特定项目时给它们排序只是全部对照历程的一部分。还必需针对下一个种别(资本利用情形)来衡量这个评级。


资本利用情形。实体bean因损耗大批的资本(特别对出格年夜的实体举行并发哀求时)而申明缭乱。与之比拟,会话bean和JDBC数据源毗连长短常轻量级的,只必要大批的服务器资本。有关这一点的更多信息,请浏览本系列的第一篇文章“J2EEtechnologiesforthestatelessnetwork”(请参阅参考材料中的J2EEPathfinder系列文章)中概述的无形态会话EJB实例-适用模子形貌。
停止语

在J2EE探险者系列的第三部分中,我们针对数据耐久性将实体bean预会话bean和JDBC组互助了对照和对比。这里会商的计划并未涵盖一切情况,可是它们代表了实体EJB组件和会话EJB组件的一些最多见用法。

下个月,我们将经由过程对照实体bean和Java数据对象(JavaDataObject)来持续研讨J2EE数据耐久性机制。祝您到当时“探究”兴奋!


作者Blog:http://blog.csdn.net/zaowei21/
相干文章
浅析对当局信息化建立熟悉的一些误区
SOA:服务架构组件化
制作支持体系的三年夜手艺
企业级软件的汗青与将来
教你在Java中完成3d编程简介

最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合。
再现理想 该用户已被删除
沙发
发表于 2015-1-20 23:54:56 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
山那边是海 该用户已被删除
板凳
发表于 2015-1-27 11:44:20 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
再见西城 该用户已被删除
地板
发表于 2015-2-2 07:47:43 | 只看该作者
是一种为 Internet发展的计算机语言
飘灵儿 该用户已被删除
5#
发表于 2015-2-7 17:17:00 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
乐观 该用户已被删除
6#
发表于 2015-2-22 17:25:34 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
透明 该用户已被删除
7#
发表于 2015-3-5 22:55:01 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
若天明 该用户已被删除
8#
发表于 2015-3-11 13:31:34 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-20 17:49:59 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 05:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表