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。
| 回书目 上一节 下一节 |