您所在的位置: 首页>>读书频道>>设计开发>>Java系列>>

5.4 在Spring里集成Hibernate

http://book.51cto.com  2008-07-25 16:42  [美]Craig Walls Ryan Breidenbach著/毕庆红/王军等译  人民邮电出版社  我要评论(0)
  • 摘要:《Spring in Action(第二版)中文版》第5章使用数据库,这一章主要讲述的是定义Spring的数据访问支持、配置数据库资源、使用Spring的JDBC框架以及集成Hibernate、JPA和iBATIS,本小节为大家介绍在Spring里集成Hibernate。
  • 标签:Spring in Action  Spring  Hibernate  JDBC

5.4  在Spring里集成Hibernate

小时候,骑自行车是很有趣的,对吧?早晨,我们会骑车去上学。放学后,我们会去朋友家里玩。等到天黑了,在家长们的喊叫声中,我们会骑车赶回家。哎,那些日子真有趣。

接着我们就长大了,需要的就不仅仅是自行车了。我们上班的路程也许比较远,我们需要装载日常用品,我们的孩子需要去上课外班,如果生活在南方,空调也是必需的。我们的需求超出了自行车的功能范围。

JDBC就是存留世界里的自行车,它能很好地完成自己份内的工作,但当程序变得更复杂时,我们对存留的需求也变得复杂。我们需要能够把对象属性映射到数据库里的字段,需要自动生成语句和查询(从无尽的问号字符串中解脱出来),还需要一些更复杂的功能:

迟缓加载:随着对象图表变得越来越复杂,我们有时不想立即获取全部关系。举例来说,假设我们在选择PurchaseOrder对象的集合,其中每个对象都包含LineItem对象的集合。如果只是想插入PurchaseOrder属性,那么就获取LineItem数据就没有什么意义,而这样做的开销可能是很大的。迟缓加载让我们可以只在需要时再获取数据。

期望获取:这与迟缓加载是相对的,它允许我们在一个查询里获取整个对象图表。当我们明确知道需要一个PurchaseOrder对象及相关的LineItems时,利用这个特性就可以只用一个操作就获取全部数据,避免了反复进行操作。

级联:有时对一个数据库表的修改会导致其他表也发生变化。仍以定单范例为例,当一个Order对象被删除时,我们还希望从数据库里删除相关的LineItems。

有多种框架都可以提供这些服务。这些服务的一个通用名称是“对象/关系映射(ORM)”。在存留层使用ORM工具可以节省数千行代码和大量的开发时间,让我们把精力从编写错误处理代码转移到解决程序的实际需求。

Spring支持多个ORM框架,包括Hibernate、iBATIS、Apache OJB、Java数据对象(JDO)、Oracle的TopLink和Java存留API(JPA)。


与对JDBC的支持一样,Spring对ORM框架的支持不仅为框架提供了集成点,还添加了一些服务:

对Spring公告事务的集成支持

透明的异常处理

线程安全的、轻量级模板类

DAO支持类

资源管理

本章没有足够的空间来介绍Spring支持的全部ORM框架,不过这不会成为什么问题,因为Spring对ORM框架的支持是很类似的,掌握其中一种就能够轻松地使用其他框架。

首先我们来介绍Spring对Hibernate的集成,它可以说是最流行的ORM框架。本章稍后还会介绍Spring对JPA(5.5小节)和iBATIS(5.6小节)的集成。

Hibernate是一种开源存留框架,在开发领域是相当流行的。它不仅提供了基本的对象关系映射,还提供了全功能ORM工具所应具有的复杂功能,比如缓存、迟缓加载、期望获取和分布式缓存。

在这一小节里,我们将着重介绍Spring如何集成Hibernate,不会执着于使用Hibernate的复杂细节。如果读者想了解使用Hibernate的更多知识,可以阅读《Java Persistence with Hibernate》(Manning,2006)或访问Hibernate站点http://www.hibernate.org

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
Hibernate开源框架学习
Spring开源框架技术
深入Vista应用程序开发
Ruby on Rails 社区网站开发
ASP.NET从入门到精通
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有