ORM的簡述

-ORM的簡述


java學習交流Q羣:1004577069

1.簡介

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

2.OBJECT

1>.對象
關係數據庫映射
	規則表達式:
		ORM把應用程序世界表示爲具有接受(關係中的一部分)的一組對象(實體或值)。ORM有時也稱爲基於事務的建模,因爲它把相關數據描述爲基本事實。這些事實如果分隔爲再小的事實就會丟失信息
	比如:人有電話/人住在什麼地方/人出生於某個日期/人在某個日期被僱傭
	ORM提供的不只是描述不同對象間關係的一個簡單直接的方式,ORM還提供了靈活性。使用ORM創建模型比使用其它方法創建的模型更有能力適應系統的變化。另外ORM允許非技術企業專家按樣本數據談論模型,因此他們可以使用真實世界的數據驗證模型。因爲ORM允許重用對象,數據模型自動映射到正確標準化的數據庫結構
	ORM模型的簡單性簡化了數據庫查詢過程.使用ORM查詢工具,用戶可以訪問期望數據,而不必理解數據結構底層的結構
2>概念.
	對象-關係映射(Object/Relation Mapping,簡稱ORM),是隨着面向對象的軟件開發發展而產生的.面向對象的開發方法是當今企業級應用級開發環境中的主流開發方法,關係數據庫時企業級應用環境中永久存放數據的主流存儲系統。對象和關係數據是業務實體的兩種表現形式,業務實體在內存中表現爲對象,在數據庫中表現爲關係數據.內存中的對象之間存在關聯和繼承關係,而在數據庫中關係數據無法直接表達多對多關聯和繼承關係。因此,對象關係映射(ORM)系統一般以中間件的形式存在,主要實現程序對象到關係數據庫的映射
	面向對象是從軟件工程基本原則(如耦合,聚合,封裝)的基礎發展起來的,而關係數據庫則是數學理論發展而來的,兩套理論存在顯著的區別。爲了解決這個不匹配的對象,對象關係映射技術應運而生
	從O/R開始,字母O起源於"對象"(Object),而R則來自於"關係"(Relational)幾乎所有的程序裏面都存在着對象個關係數據庫,在業務邏輯層和用戶界面層,是面向對象的,當對象信息發生變化的時候,需要把對象的信息保存在關係數據庫中
	當你開發一個應用程序的時候(不適用O/R Mapping),你可能會寫不少數據訪問層的代碼,用來從數據庫保存,刪除,讀取對象信息等等你再DAO中寫了很多的方法來讀取對象數據改變對象狀態等等任務。而這些代碼寫起來總是重複的
	如果打開你的程序看看DAO代碼,你肯定會看到很多近似的通用的模型,以保存對象的方法爲例,你傳入一個對象,爲SqlCommand對象添加SqlParameter,把所有屬性和對象對應,設置SqlCommand的CommandText屬性爲存儲過程,然後運行SqlCommand對於每個對象都要寫這樣重複的代碼
	除此之外,還有更好的辦法嗎?有,引入一個O/R Mapping。實質上,一個O/R Mapping會爲你生成DAO與其直接寫DAO代碼不如用O/R Mapping 使用O/R Mapping 保存.刪除.讀取數據,O/R Mapping負責生成SQL 你只需要關心對象就好
	對象關係映射成功運用在不同的面向對象持久層產品中:OJB Hibernate 等等
		一般的ORM包括以下四部分:
			1.一個對持久層對象進行crud操作的API
			2.一個語言或API來規定與類和類屬性相關的查詢
			3.一個規定mapping metadata的工具
			4.一種技術可以讓ORM的實現同事務對象一起進行 dirty checking,lazy association fetching以及其他的優化操作		

3.映射模式

從《公共倉庫元模型:開發指南》一書第八章CWM元倉庫中摘錄出來的內容,實現了公共倉庫元模型(CWM)的UML圖到Microsoft SQL Server數據庫的映射,是一種將層次結構映射成關係型結構的方法。
	基本情況;公共倉庫模型(CWM)是對象管理組織(OMG)的一種和數據倉庫相關的元模型標準,採用UML表示的對象層次結構,在保存到數據庫中時由於面向對象的數據庫技術的不完善(理論研究和商業應用都不是主流),所以該書的作者傾向於使用成熟的關係型數據庫來保存也是存儲本體時所遇到的問題
	採用方法:將UML模型中的各種元素通過轉換,保存爲數據庫模式。由於CWM是一種元模型,因此模型的實例也是一種模型,將這種實例以數據庫數據的形式來保存。使用數據庫中比較成熟的存儲技術提高開發對和執行效率
	1>.數據庫類映射模式
		1).簡單數據庫類型模式:建立UML和關係型數據庫中簡單數據類型的映射表以指導映射
		2).枚舉數據類型模式:每種枚舉類型對應一個表,只有一個列(_EnumLiteral)表示枚舉值
		3).基於類的數據類型模式:使用外鍵約束,將基礎列與基於類的類型實例相關聯
	2>類映射模型
	每個類對應一個表,單值屬性,多值屬性,繼承關係可以用下述方法映射,而引用屬性將在關聯映射模型中提到
		1).單值屬性模式:是cardinality的上界爲1的屬性,映射到類所對象的表的列上。若其下界也爲1(必須有的屬性),列屬性爲not null
		2).多值屬性模式:每多值屬性映射成一個獨立的表,使用外鍵連接到類所對應得表上
		3).繼承模式:每加入一個類的實力時,格局其繼承關係自頂向下生成每個類的對象,這些對象具有相同的ID(根對象對應記錄的主鍵).刪除獨享的實例時,自底向上刪除數據  遇到中間刪或者多重繼承怎麼解決
	3>關聯映射模式
		1).一對一關聯模式:在關聯兩端各加一列
		2).一對多關聯模式;在關聯兩端各加一列如果多這端是有序的還需加入一列表示序號
		3).多對多關聯模式:將關聯單獨作一個表
		4).組合關聯模式:注意級聯式刪除
		5).反演關聯模式:關聯兩端指向相關的類型,和普通關聯一樣
         6).成對關聯模式:關聯記錄兩個類間的關係,用交集類表示關聯,表示成一個單獨的表,每個關聯對應一個表,用外鍵表示他們的關係
         7).關聯上的OCL需要分析成對應得存儲過程代碼
         8).保證管理那的cardinality也需要分析稱對應得存儲過程代碼
	4>.引用映射模式
       在UML中不存在MOF特徵,指屬性是聲明爲引用類型的實例用存儲過程的實現OPERATION RISK MANGEMENT
            
            
            
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章