|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
主要缺点就是:速度比较慢,没有C和C++快 Hibernate是一个收费的开源Java包,它使得与干系数据库打交道变得非常轻松,就像您的数据库中包括天天利用的一般Java对象一样,同时不用思索怎样把它们从奥秘的数据库表中掏出(或放回到数据库表中)。它束缚了您,使您能够专注于使用程序的对象和功效,而不用忧虑怎样保留它们或稍后怎样找到它们。
年夜多半使用程序都必要处置数据。Java使用程序运转时,常常把数据封装为互相毗连的对象收集,可是当程序停止时,这些对象就会消散在一团逻辑中,以是必要有一些保留它们的办法。偶然候,乃至在编写使用程序之前,数据就已存在了,以是必要有读进它们和将其暗示为对象的办法。手动编写代码来实行这些义务不但单调有趣、易于堕落,并且会占用全部使用程序的很年夜一部分隔发事情量。
优异的面向对象开辟职员厌倦了这类反复性的休息,他们入手下手接纳一般的“主动”偷懒做法,即,创立工具,使全部历程主动化。关于干系数据库来讲,这类勉力的最年夜功效就是对象/干系映照(ORM)工具。
这类工具有良多,从高贵的贸易产物到内置于J2EE中的EJB尺度。但是,在良多情形下,这些工具具有本身的庞大性,使得开辟职员必需进修利用它们的具体划定规矩,并修正构成使用程序的类以满意映照体系的必要。因为这些工具为对付加倍严厉和庞大的企业需求而不休开展,因而在对照复杂和罕见的场景中,利用它们所面对的庞大性反而盖过了所能取得的优点。这引发了一场反动,增进了轻量级办理计划的呈现,而Hibernate就是如许的一个例子。
Hibernate的事情体例
Hibernate不会对您形成妨害,也不会强制您修正对象的举动体例。它们不必要完成任何难以想象的接口以便可以延续存在。唯一必要做的就是创立一份XML“映照文档”,告知Hibernate您但愿可以保留在数据库中的类,和它们怎样联系关系到该数据库中的表和列,然后就能够请求它以对象的情势猎取数据,大概把对象保留为数据。与其他办理计划比拟,它几近已很完善了。
因为本文只是一篇先容性的文章,以是不会引进构建和利用Hibernate映照文档的详细例子(我在《Hibernate:ADevelopersNotebook》一书的头几章中已先容了一个例子)。别的,在网上和Hibernate的在线文档中,还能够找到一些不错的例子,请拜见上面的“其他信息”部分。它实践上相称直不雅。使用程序对象中的属性以一种复杂而天然的体例与准确的数据库布局相干联。
运转时,Hibernate读取映照文档,然后静态构建Java类,以便办理数据库与Java之间的转换。在Hibernate中有一个复杂而直不雅的API,用于对数据库所暗示的对象实行查询。要修正这些对象,(一样平常情形下)只需在程序中与它们举行交互,然后告知Hibernate保留修正便可。相似地,创立新对象也很复杂;只需以惯例体例创立它们,然后告知Hibernate有关它们的信息,如许就可以在数据库中保留它们。
HibernateAPI进修起来很复杂,并且它与程序流的交相互当天然。在得当的地位挪用它,就能够告竣目标。它带来了良多主动化和代码节俭方面的优点,以是花一点工夫进修它是值得的。并且还能够取得另外一个优点,即代码不必体贴要利用的数据库品种(不然的话乃至必需晓得)。我地点的公司就曾有过在开辟历程前期自愿改换数据库厂商的履历。这会形成伟大的劫难,可是借助于Hibernate,只必要复杂地修正Hibernate设置文件便可。
这里的会商假定您已经由过程创立Hibernate映照文档,创建了一个干系数据库,而且具有要映照的Java类。有一个Hibernate“工具集”可在编译时利用,以撑持分歧的事情流。比方,假如您已具有Java类和映照文档,Hibernate能够为您创立(或更新)必须的数据库表。大概,仅仅从映照文档入手下手,Hibernate也可以天生数据类。大概,它能够反向计划您的数据库和类,从而制定映照文档。另有一些用于Eclipse的alpha插件,它们能够在IDE中供应智能的编纂撑持和对这些工具的图形会见。
假如您利用的是Hibernate2情况,这些工具鲜有供应,可是存在可用的第三方工具。
利用Hibernate的场所
既然Hibernate看起来云云天真好用,为何还要利用其他的工具呢?上面有一些场景,能够匡助您做出判别(也许经由过程供应一些对照和高低文,能够有助于判别十分合用Hibernate的场所)。
假如使用关于数据存储的必要非常复杂――比方,您只想办理一组用户优先选择――您基本不必要数据库,更不必说一个优异的对象-干系映照体系了(即便它也如Hibernate这般易于利用)!从Java1.4入手下手,有一个尺度的JavaPreferencesAPI能够很好地发扬这个感化。(在ONJava文章中能够找到有关PreferencesAPI的更多信息。)
关于熟习利用干系数据库和懂得怎样实行完善的SQL查询与企业数据库交互的人来讲,Hibernate仿佛有些碍手碍脚,这就像带有动力和主动排挡的快艇车会使注意功能的赛车驾驶员不耐心一样。假如您属于这类人,假如您地点的项目团队具有一个壮大的DBA,大概有一些存储历程要处置,您大概想研讨一下iBATIS。Hibernate的创立者自己就把iBATIS看成是另外一种风趣的选择。我对它很有乐趣,由于我们曾为一个电子商务站点开辟了一个相似的体系(其功效更加壮大),并且从当时到如今,我们已在其他情况中利用过它,只管在发明Hibernate以后,在新项目中我们一般更喜好利用Hibernate。您能够以为,以SQL为中央的办理计划(好比iBATIS)是“反向的”对象/干系映照工具,而Hibernate是一个更加传统的ORM。
固然,另有其他的内部缘故原由会招致接纳别的的办法。好比,在一个企业情况中,必需利用成熟的EJB架构(大概其他的一些非一般对象映照体系)。能够为供应本人的数据存储工具的平台量身定做代码,好比MacOSXsCoreData。利用的多是像XMLDTD如许的存储标准,而它基本不触及干系数据库。
可是,假如您利用的是富对象模子,并且想要天真、轻松且高效地保留它(不管您是不是正要入手下手或已决意利用干系数据库,只需这是一个选择――并且存在可用的优异收费数据库,好比MySQL,或可嵌进Java的HSQLDB,它就应当一直是一个选择),那末Hibernate极可能就是您幻想的选择。您大概会惊奇于节俭的工夫之多,和您将会何等地喜好利用它。
其他信息
Hibernate项目有大批的在线文档,能够匡助您找准偏向,疾速入手下手利用。
威望性的参考材料是HibernateinAction,作者是ChristianBauer和GavinKing,都是Hibernate的创立者。该书周全而基本地报告了Hibernate包的功效和准确的利用办法。
浏览我的书Hibernate:ADevelopersNotebook,也是一种疾速上手的好办法。它间接但具体地报告了怎样在Java项目中设置Hibernate,和怎样利用它的一些最主要的功效。个中的代码示例广泛基于Hibernate和HSQLDB的初期版本,以是假如您想不加修改地利用它们,必要利用这两种软件的准确版本。不管怎样,基础的观点是准确的,并且我但愿可以尽快地针对Hibernate3更新本书。
另外一本风趣的书是BetterFasterLighterJava,作者是BruceTate和JustinGehtland。书中给出了一些有用办法,能够以公道的体例完成实践的项目,这也是它盛行的缘故原由之一。它在怎样评价和利用(或反对)可用的Java手艺方面给出了公道倡议,并作为准确办法的例子提到了Hibernate和Spring。
最初,“WorkingwithHibernateinEclipse”(它事后提到了更壮大的新的alpha版的Hibernate3工具)中具体报告了怎样将一个叫做HibernateSynchronizer的Eclipse插件与Hibernate一同利用。
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。 |
|