快速业务通道

Hibernate3.x:最出色的ORM框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

Hibernate3.x:最出色的ORM框架

时间:2011-03-07 IT168 极地圣火

一、前言

JDBC是Java操作数据库最常用的数据库接口,它隔离了数据库的复杂度,使程序员可以将主要精力放到程序逻辑上来。而JDBC也只是提供了和数据库交互的简单方式,如打开数据库表,执行SQL语句等。这对于复杂的程序也需要编写大量的代码,因此,近几年在Java数据库领域出现了许多框架,这此框架重新对JDBC进行了更高层次的封装。如早期的iBATIS。这个框架使用起来非常方便。它也没有基于复杂的面向对象模型。也不工作在复杂的关系图中。这种最初级的框架将数据库和应用程序隔离开来。使程序员只操作逻辑数据库。但由于这种框架不是基本面向对象和关系模型,在对付大规模应用程序时仍然捉襟见肘。基于这些不足,最近许多基于关系映射(ORM)的数据库框架开始流行起来。Hibernate就是其中的佼佼者。ORM的基本思想是使用外键和适当的约束将抽象不同的数据库。在最新的Hibernate3.x中,增强了对约束的控制,使用功能更强,也更容易使用。

在这些ORM框架刚兴起的时候,有很多人认为ORM框架最多只是从多选择之一。即使某个ORM框架做的非常出钯,将对象和数据库之间映射的非常完美也是如此。他们认为直接使用SQL写程序才是王道,而使用自动生成的SQL的效率低下,而且很不灵活。但随着程序规模越来越大,这种想法越来越站不住脚。这主要并不只是因为直接使用SQL将产生大量的代码,而是因为使用ORM框架,我们将操作一个完全不同的层:ORM层。直接使用SQL也可能产生其他的问题,如我们经常会遇到的N+1选择问题。而且在连接很多表时,我们会一遍一遍地重复写非常类似的SQL语句。如果我们使用Hibernate,这些问量就将荡然无存。我们可以使非常简单的HQL来完成上述复杂的问题。象Hibernate一样ORM框架还应该能进行各种优化,以使操作达到最佳化。就目前来看,这些框架的优化功能已经越来越强,正在逐步取代用JDBC和SQL操作数据库的方式。

虽然可以用ORM框架来编写大多数程序,但有时也需要直接使用SQL来操作。也许Hibernate的开发团队也意识到了这一点,也为Hibernate提供了直接执行SQL的功能。在早期的Hibernate版本中,解决方案是直接将JDBC连接暴露给用户,这样程序员就可以直接使用prepared statment来执行SQL了。但在新的Hibernate3.x中,这种情况已经被改变了。现在,Hibernate3.x可以不使用一条SQL编写整个应用程序,而且这并不会影响Hibernate的灵活性,同时也可以使用Hibernate的所有其他特性。

二、Hibernate3.x功能演示

上面说了很多Hibernate的好处,也面就让我们来体会一下Hibernate3.x在这方面的卓越表现。我们将使用一个简单的Person-Employment-Oranization模型来说明。最简单的类是Person,下面是它的定义:

<class name="Person" lazy="true"> <id name="id" unsaved-value="0"> <generator class="increment"/> </id> <property name="name" not-null="true"/> <loader query-ref="person"/> <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-insert> <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update> <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete> </class>

看了上面的定义,可能我们会首先注意到三个手写的SQL语句:INSERT、UPDATE和DELETE。其中的?将匹配上面所列的两个属性(这两个属性是id和name)。除了这个,这三条语句没有什么之处。

也许很多读者最感兴趣的是<loader>标签。这个标签定义了一个

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号