ORM

ORM

對象關係映射(英語:(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程式技術,用於實現面向對象程式語言里不同類型系統的數據之間的轉換。從效果上說,它其實是創建了一個可在程式語言里使用的--“虛擬對象資料庫”。

面向對象是從軟體工程基本原則(如耦合、聚合、封裝)的基礎上發展起來的,而關係資料庫則是從數學理論發展而來的,兩套理論存在顯著的區別。為了解決這個不匹配的現象,對象關係映射技術應運而生。

對象關係映射(Object-Relational Mapping)提供了概念性的、易於理解的模型化數據的方法。ORM方法論基於三個核心原則: 簡單:以最基本的形式建模數據。 傳達性:資料庫結構被任何人都能理解的語言文檔化。 精確性:基於數據模型創建正確標準化的結構。 典型地,建模者通過收集來自那些熟悉應用程式但不熟練的數據建模者的人的信息開發信息模型。建模者必須能夠用非技術企業專家可以理解的術語在概念層次上與數據結構進行通訊。建模者也必須能以簡單的單元分析信息,對樣本數據進行處理。ORM專門被設計為改進這種聯繫。

簡單的說:ORM相當於中繼數據。具體到產品上,例如ADO.NET Entity Framework。DLINQ中實體類的屬性[Table]就算是一種中繼數據。

基本介紹

  • 中文名:對象關係映射
  • 外文名:Object Relation Mapping
  • 領域:計算機軟體工程處理技術
  • 簡稱:ORM,O/RM,O/R mapping
對象,概念,產品,映射模式,

對象

-關係資料庫映射
規則表達式
ORM把應用程式世界表示為具有角色(關係中的部分)的一組對象(實體或值)。ORM有時也稱為基於事實的建模,因為它把相關數據描述為基本事實。這些事實如果分割為再小的事實就會丟失信息。
簡單事實的一些例子包括:
人有電話
人住在某個地方
人生於某個日期
人在某個日期被僱傭
ORM提供的不只是描述不同對象間關係的一個簡單而直接的方式。ORM還提供了靈活性。使用ORM創建的模型比使用其它方法創建的模型更有能力適應系統的變化。另外,ORM允許非技術企業專家按樣本數據談論模型,因此他們可以使用真實世界的數據驗證模型。因為ORM允許重用對象,數據模型能自動映射到正確標準化的資料庫結構
ORM模型的簡單性簡化了資料庫查詢過程。使用ORM查詢工具,用戶可以訪問期望數據,而不必理解資料庫的底層結構。

概念

對象-關係映射(OBJECT/RELATIONALMAPPING,簡稱ORM),是隨著面向對象的軟體開發方法發展而產生的。用來把對象模型表示的對象映射到基於S Q L 的關係模型資料庫結構中去。這樣,我們在具體的操作實體對象的時候,就不需要再去和複雜的 SQ L 語句打交道,只需簡單的操作實體對象的屬性和方法。O R M 技術是在對象和關係之間提供了一條橋樑,前台的對象型數據和資料庫中的關係型的數據通過這個橋樑來相互轉化。

產品

眾多廠商和開源社區都提供了持久層框架的實現,常見的有:
JAVA系列:
APACHE OJB
CAYENNE
JAXOR
JPA
IBATIS/MYBATIS
JRELATIONALFRAMEWORK
SMYLE
TOPLINK
其中 TOPLINK 是 ORACLE 的商業產品,其他均為開源項目。
其中 HIBERNATE的輕量級 ORM 模型逐步確立了在 JAVA ORM 架構中領導地位,甚至取代複雜而又繁瑣的 EJB 模型而成為事實上的 JAVA ORM 工業標準。而且其中的許多設計均被 J2EE 標準組織吸納而成為最新 EJB 3.0 規範的標準,這也是開源項目影響工業領域標準的有力見證。
.NET系列:
ENTITYSCODEGENERATE
LINQ TOSQL
GROVE
RUNGOO.ENTERPRISEORM
FIRECODE CREATOR
MYGENERATION
CODESMITH PRO
CODEAUTO ...
其中:
ENTITYSCODEGENERATE :是(VB/C#.NET實體代碼生成工具)的簡稱,ENTITYSCODEGENERATE(ECG)是一款專門為.NET資料庫程式開發量身定做的(ORM框架)代碼生成工具,所生成的程式代碼基於面向對象、分層架構、ORM及反射+工廠模式等。支持.NET1.1及以上版本,可用於ORACLE、SQLSERVER、SYBASE、DB2、MYSQL、ACCESS、SQLITE、POSTGRESQL、DM(達夢)、POWERDESIGNER檔案、INFORMIX、FIREBIRD、MAXDB、EXCEL等和OLEDB、ODBC連線的資料庫並可自定義,詳見工具的幫助文檔和示例。
LINQ TO SQL :微軟為SQLSERVER資料庫提供的,是.NET FRAMEWORK 3.5 版的一個組件,提供了用於將關係數據作為對象管理的運行時基礎結構。 GROVE:即GROVE ORM DEVELOPMENT TOOLKIT。包含GROVE和TOOLKIT兩部分內容。GROVE為ORM提供對象持久、關係對象查詢、簡單事務處理、簡單異常管理等功能。 RUNGOO.ENTERPRISEORM : 是一個基於企業套用架構的代碼生成工具,主要適用於B/S模式的套用系統開發。開發語言:C#,支持VS2003和VS2005兩個版本的開發平台,同時支持SQL SERVER2000/2005。 風越代碼生成器 [FIRECODE CREATOR]是一款商業共享基於多種資料庫的程式代碼生成軟體,可快速建立:添加、編輯、查看、列表、搜尋功能。支持的資料庫:SQL SERVER、ACCESS、ORACLE、MYSQL、EXCEL、FOXPRO、FOXBASE、TEXT等資料庫連線。

映射模式

從《公共倉庫元模型:開發指南》一書第8章CWM元倉庫中摘錄出來的內容,實現了公共倉庫元模型(CWM)的UML圖到MICROSOFT SQL SERVER資料庫的映射,是一種將對象層次結構映射成關係型結構的方法。個人認為可以作為將本體(ONTOLOGY)檔案存儲到關係型資料庫中的一種可借鑑方法。
基本情況:公共倉庫元模型(CWM)是對象管理組織(OMG)的一種和數據倉庫相關的元模型標準,採用UML表示的對象層次結構,在保存到資料庫中時由於面向對象的資料庫技術的不完善(理論研究和商業套用都不是主流),所以該書的作者傾向於使用成熟的關係型資料庫來保存-這也是存儲本體時所遇到的問題。
採用方法:將UML模型中的各種元素通過轉換,保存為資料庫模式。由於CWM是一種元模型,因此模型的實例也是一種模型,將這種實例以資料庫數據的形式保存。使用資料庫中比較成熟的存儲過程技術提高開發和執行效率。
1、數據類型映射模式
1.1簡單數據類型模式:建立UML和關係型資料庫中簡單數據類型的映射表以指導映射。
1.2枚舉數據類型模式:每種枚舉類型對應一個表,只有一個列(_ENUMLITERAL)表示枚舉值。
1.3基於類的數據類型模式:使用外鍵約束,將基礎列與基於類的類型實例相關聯。
2、類映射模型
每個類對應一個表。單值屬性、多值屬性、繼承關係可以用下述方法映射,而引用屬性將在關聯映射模式中提到。
2.1單值屬性模式:是CARDINALITY的上界為1的屬性,映射到類所對應的表的列上。若其下界也為1(必須有的屬性),列屬性為NOT NULL。
2.2多值屬性模式:每個多值屬性映射成一個獨立的表,使用外鍵連線到類所對應的表上。
2.3繼承模式:每加入一個類的實例時,根據其繼承關係自頂向下生成每個類的對象,這些對象具有相同的ID(根對象對應記錄的主鍵)。刪除對象實例時,自底向上刪除數據。遇到從中間刪的情況怎么辦?多重繼承怎么處理?
3、關聯映射模式
3.1一對一關聯模式:在關聯兩端各加一列。
3.2一對多關聯模式:和3.1一樣。如果多這端是有序的,還需加入一列表示序號。
3.3多對多關聯模式:將關聯單獨作一個表。
3.4組合關聯模式:注意級聯式刪除。
3.5反演關聯模式:關聯兩端指向相關的類型,和普通關聯一樣。
3.6成對關聯模式:關聯記錄兩個類間的關係,用交集類表示關聯,表示成一個單獨的表,每個關聯對應一個表,用外鍵表示它們間的關係。
3.7關聯上的OCL需要分析成對應的存儲過程代碼。
3.8保證關聯的CARDINALITY也需要分析成對應的存儲過程代碼。
4、引用映射模式
在UML中不存在的MOF特徵,指屬性是聲明為引用類型的實例。用存儲過程實現。
OPERATIONAL RISK MANAGEMENT

相關詞條

熱門詞條

聯絡我們