真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

什么是ORM

一、ORM簡介
對象關(guān)系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中。那么,到底如何實現(xiàn)持久化呢?一種簡單的方案是采用硬編碼方式,為每一種可能的數(shù)據(jù)庫訪問操作提供單獨的方法。
這種方案存在以下不足:
1.持久化層缺乏彈性。一旦出現(xiàn)業(yè)務(wù)需求的變更,就必須修改持久化層的接口
2.持久化層同時與域模型與關(guān)系數(shù)據(jù)庫模型綁定,不管域模型還是關(guān)系數(shù)據(jù)庫模型發(fā)生變化,毒藥修改持久化曾的相關(guān)程序代碼,增加了軟件的維護難度。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供鄢陵網(wǎng)站建設(shè)、鄢陵做網(wǎng)站、鄢陵網(wǎng)站設(shè)計、鄢陵網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、鄢陵企業(yè)網(wǎng)站模板建站服務(wù),十余年鄢陵做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

    ORM提供了實現(xiàn)持久化層的另一種模式,它采用映射元數(shù)據(jù)來描述對象關(guān)系的映射,使得ORM中間件能在任何一個應(yīng)用的業(yè)務(wù)邏輯層和數(shù)據(jù)庫層之間充當(dāng)橋梁。Java典型的ORM中間件有:Hibernate,ibatis,speedframework。 
    ORM的方法論基于三個核心原則: 

· 簡單:以最基本的形式建模數(shù)據(jù)。
· 傳達(dá)性:數(shù)據(jù)庫結(jié)構(gòu)被任何人都能理解的語言文檔化。
· 精確性:基于數(shù)據(jù)模型創(chuàng)建正確標(biāo)準(zhǔn)化了的結(jié)構(gòu)。

二、ORM的概念
讓我們從O/R開始。字母O起源于"對象"(Object),而R則來自于"關(guān)系"(Relational)。幾乎所有的程序里面,都存在對象和關(guān)系數(shù)據(jù)庫。在業(yè)務(wù)邏輯層和用戶界面層中,我們是面向?qū)ο蟮摹.?dāng)對象信息發(fā)生變化的時候,我們需要把對象的信息保存在關(guān)系數(shù)據(jù)庫中。
當(dāng)你開發(fā)一個應(yīng)用程序的時候(不使用O/R Mapping),你可能會寫不少數(shù)據(jù)訪問層的代碼,用來從數(shù)據(jù)庫保存,刪除,讀取對象信息,等等。你在DAL中寫了很多的方法來讀取對象數(shù)據(jù),改變狀態(tài)對象等等任務(wù)。而這些代碼寫起來總是重復(fù)的。

    ORM解決的主要問題是對象關(guān)系的映射。域模型和關(guān)系模型分別是建立在概念模型的基礎(chǔ)上的。域模型是面向?qū)ο蟮模P(guān)系模型是面向關(guān)系的。一般情況下,一個持久化類和一個表對應(yīng),類的每個實例對應(yīng)表中的一條記錄,類的每個屬性對應(yīng)表的每個字段。 
    ORM技術(shù)特點: 
    1.提高了開發(fā)效率。由于ORM可以自動對Entity對象與數(shù)據(jù)庫中的Table進(jìn)行字段與屬性的映射,所以我們實際可能已經(jīng)不需要一個專用的、龐大的數(shù)據(jù)訪問層。 
    2.ORM提供了對數(shù)據(jù)庫的映射,不用sql直接編碼,能夠像操作對象一樣從數(shù)據(jù)庫獲取數(shù)據(jù)。 

三、ORM的優(yōu)缺點
ORM的缺點是會犧牲程序的執(zhí)行效率和會固定思維模式。
從系統(tǒng)結(jié)構(gòu)上來看,采用ORM的系統(tǒng)一般都是多層系統(tǒng),系統(tǒng)的層次多了,效率就會降低。ORM是一種完全的面向?qū)ο蟮淖龇?,而面向?qū)ο蟮淖龇ㄒ矔π阅墚a(chǎn)生一定的影響。

    在我們開發(fā)系統(tǒng)時,一般都有性能問題。性能問題主要產(chǎn)生在算法不正確和與數(shù)據(jù)庫不正確的使用上。ORM所生成的代碼一般不太可能寫出很高效的算法,在數(shù)據(jù)庫應(yīng)用上更有可能會被誤用,主要體現(xiàn)在對持久對象的提取和和數(shù)據(jù)的加工處理上,如果用上了ORM,程序員很有可能將全部的數(shù)據(jù)提取到內(nèi)存對象中,然后再進(jìn)行過濾和加工處理,這樣就容易產(chǎn)生性能問題。 
    在對對象做持久化時,ORM一般會持久化所有的屬性,有時,這是不希望的。 
    但ORM是一種工具,工具確實能解決一些重復(fù),簡單的勞動。這是不可否認(rèn)的。但我們不能指望工具能一勞永逸的解決所有問題,有些問題還是需要特殊處理的,但需要特殊處理的部分對絕大多數(shù)的系統(tǒng),應(yīng)該是很少的。
  • 什么是“持久化”
    持久(Persistence),即把數(shù)據(jù)(如內(nèi)存中的對象)保存到可永久保存的存儲設(shè)備中(如磁盤)。持久化的主要應(yīng)用是將內(nèi)存中的數(shù)據(jù)存儲在關(guān)系型的數(shù)據(jù)庫中,當(dāng)然也可以存儲在磁盤文件中、XML數(shù)據(jù)文件中等等。

按通常的系統(tǒng)設(shè)計,使用 ,操作數(shù)據(jù)庫,業(yè)務(wù)處理邏輯和數(shù)據(jù)存取邏輯是混雜在一起的。
一般基本都是如下幾個步驟:
1、建立數(shù)據(jù)庫連接,獲得 Connection 對象。
2、根據(jù)用戶的輸入組裝查詢 SQL 語句。
3、根據(jù) SQL 語句建立 Statement 對象 或者 PreparedStatement 對象。
4、用 Connection 對象執(zhí)行 SQL語句,獲得結(jié)果集 ResultSet 對象。
5、然后一條一條讀取結(jié)果集 ResultSet 對象中的數(shù)據(jù)。
6、根據(jù)讀取到的數(shù)據(jù),按特定的業(yè)務(wù)邏輯進(jìn)行計算。
7、根據(jù)計算得到的結(jié)果再組裝更新 SQL 語句。
8、再使用 Connection 對象執(zhí)行更新 SQL 語句,以更新數(shù)據(jù)庫中的數(shù)據(jù)。
7、最后依次關(guān)閉各個 Statement 對象和 Connection 對象。
這樣操作會很復(fù)雜,而ORM將這些復(fù)雜的操作簡單化,只需要生成一個對象,對這個對象進(jìn)行操作,自動就會轉(zhuǎn)換成SQL語句,去數(shù)據(jù)庫進(jìn)行操作,再將返回的結(jié)果從新轉(zhuǎn)換成對象


當(dāng)前名稱:什么是ORM
本文URL:http://weahome.cn/article/iescgh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部