您的位置:首页 > 其它

使用Hibernate进行对象的关系映射(1)

2007-07-01 10:06 330 查看
Hibernate是业界比较推崇的ORM(o/r mapping),目前的版本已经非常稳定和成熟,而且的他的文档也极其丰富。
Http://www.jdon.com 和http://www.chinaxp.com 这两个技术网站对hibernate的讨论很多也很精到。
这篇文章是一篇让出学者入门的文章。
--译者按

在Java技术中有许多方法可以对数据进行持久化,持久层也是Java应用程序中最重要的部分之一。在当今关系型数据库仍为如主流数据库的时候,我个人认 为持久层技术常常并没有得到应用的重视。在这篇文章里将涉及到几个著名的以Java技术实现的持久性框架,随后我们会谈到一些最新的持久性框架譬如: Hibernate,让我们就从那些著名的框架以极其通用APIs开是这次旅行吧。

1.JDBC
大多数Java开发员都是用JDBC来和数据库进行通信,它可以通过DAO(Data Access Object)模式来进行改善和提高,然而,这种方式在大型应用程序中则会造成维护的"高消费"。不过大多数的开发员对于JDBC的操作以及其API都是 非常熟悉,因此,我相信不管怎样它仍然是目前最被广泛应用的数据持久技术之一。( 不要着急"噩梦马上就要结束了",译者注)

2.EJB
据调查EJB通常是在数据持久技术上的第二个选择,它是通过entity beans来对数据进行持久化,这听起来就好像是Java持久框架界中的"银单"一样(真的有银弹??),我的意思是在巨大的市场下(潜在的一块大蛋 糕?)。然而事实上并不是这样的:首先你需要购买一个价位合理的EJB容器--J2EE应用服务器,采用开源项目的免费EJB容器是一种不错的选择:), 比如JBOSS(恕我直言);其次全面采用entity bean需要花"大量"的时间来理解EJB规范。在采用EJB之前你通常想在熟练掌握它的API;再有就是,你需要知道在每一个容器除了ejb- jar.xml以外所专有的部署描述符,而且很多商业EJB容器的性能和技术支持也不敢恭维。对于J***A开发员,在EJB中实现JDBC也比较复杂。 EJB中最为被关注的可能是无状态的会话BEAN(stateless-Session beans)和消息驱动BEAN(messaging driver beans)

3.更多持久框架
通过对前面两种规范一阵"游移不定和踌躇"以后,你可能发现它们都不是完美的解决方案。JDO的出现似乎有了一些改观,但是JDO1.0不论是从操作方式 上还是其功能上对于Java开发员来说似乎"天还是灰蒙蒙的","而且没有一个好的免费的产品",终究JDO1.0仍然没有带来太大改变,人们仍停留在用 它来学习的阶段,这种情况有待JDO的成熟来解决。(目前SUN已经加入JDOCENTORL.COM来着手JDO2.0,我们唯有等待那丝曙光了。)
那么我们该怎么做呢?如果你抛开主流于非主流的概念,你会发现你将有更多的选择(也许是更好的?),如果是这样,你不会不注意到这样两个名字 "Hibernate"和"OJB",这两种持久框架跟前面的提到的JDBC、EJB和JDO在某些方面有很大的不同,它们不需要任何容器,提供简单易用 并符合ODMG3-style APIs,而且它们免费、开源、有丰富的文档和稳定的开发背景。
也许你所要做的仅仅是选择?

4"冬眠"Hibernate
就让我们现在开始吧,在这些"新鲜的"持久框架中我选择了Hibernate,同时当初我也把OJB列入我的选择之列,不过最后之所以选择 Hibernate的原因要归功于它丰富的文档,我知道有许多其它的人使用OJB也取得过成功。不管怎么样,Hibernate和OJB都可以让你完全操 纵持久层。
请访问http://hibernate.blumears.net/4.html来获得Hibernate的功能介绍。
下面我想首先说一下我的运行环境:Hibernate 2.0 RC1 (2.0 beta 5)+ Tomcat 4.1.18+WebSphere Application Server 5.0.1(请到相应的官方网站获取各个的最新版本,译者注),我的例子在其他的容器中也能正常的运行,不过我没有进行这方面的测试。Hibernate 网站有关于在Jboss下的配置信息,通常几乎所有的应用服务器和数据库都能整合Hibernate。

4.1 Mapping Relationships with Hibernate
下面我们开讨论如何使用Hibernate进行对象的关系映射。我将介绍如何使用Hibernate进行"一对一"、"一对多"、"多对多"的映射。在我 提供的代码中只是为了测试而没有考虑到更多的"模式啦规则啦"等等,这就说这里的例子只是一个启蒙,让我们从代码中学习Hibernate的API以及如 何进行开发,请再你自己书写的时候注意必要的模式和编码规范。

然后我们看看我的例子中都有哪些对象,让们开始为他们建模吧。
(未完待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: