1. 程式人生 > >【第八章】 對ORM的支援 之 8.1 概述

【第八章】 對ORM的支援 之 8.1 概述

8.1  概述

8.1.1  ORM框架

       ORM全稱物件關係對映(Object/Relation Mapping),指將Java物件狀態自動對映到關係資料庫中的資料上,從而提供透明化的持久化支援,即把一種形式轉化為另一種形式。

       物件與關係資料庫之間是不匹配,我們把這種不匹配稱為阻抗失配,主要表現在:

  • 關係資料庫首先不支援面向物件技術如繼承、多型,如何使關係資料庫支援它們;
  • 關係資料庫是由表來存放資料,而面向物件使用物件來存放狀態;其中表的列稱為屬性,而物件的屬性就是屬性,因此需要通過解決這種不匹配;
  • 如何將物件透明的持久化到關係資料庫表中;
  • 如果一個物件存在橫跨多個表的資料,應該如何為物件建模和對映。

其中這些阻抗失配只是其中的一小部分,比如還有如何將SQL集合函式結果集對映到物件,如何在物件中處理主鍵等。

ORM框架就是用來解決這種阻抗失配,提供關係資料庫的物件化支援。

ORM框架不是萬能的,同樣符合80/20法則,應解決的最核心問題是如何在關係資料庫表中的行和物件進行對映,並自動持久化物件到關係資料庫。

ORM解決方案適用於解決透明持久化、小結果集查詢等;對於複雜查詢,大結果集資料處理還是沒有任何幫助的。

目前已經有許多ORM框架產生,如Hibernate、JDO、JPA、iBATIS等等,這些ORM框架各有特色,Spring對這些ORM框架提供了很好的支援,接下來首先讓我們看一下Spring如何支援這些ORM框架。

8.1.2  Spring對ORM的支援

       Spring對ORM的支援主要表現在以下方面:

  • 一致的異常體系結構,對第三方ORM框架丟擲的專有異常進行包裝,從而在使我們在Spring中只看到DataAccessException異常體系;
  • 一致的DAO抽象支援:提供類似與JdbcSupport的DAO支援類HibernateDaoSupport,使用HibernateTemplate模板類來簡化常用操作,HibernateTemplate提供回撥介面來支援複雜操作;
  • Spring事務管理:Spring對所有資料訪問提供一致的事務管理,通過配置方式,簡化事務管理。

Spring還在測試、資料來源管理方面提供支援,從而允許方便測試,簡化資料來源使用。