ORM

orm

  • ORM(Object Relational Mapping)框架采用元數(shù)據(jù)來描述對象一關系映射細節(jié)系吩,元數(shù)據(jù)一般采用XML格式,并且存放在專門的對象一映射文件中妒蔚。

  • 只要提供了持久化類與表的映射關系穿挨,ORM框架在運行時就能參照映射文件的信息,把對象持久化到數(shù)據(jù)庫中肴盏。當前ORM框架主要有五種:Hibernate(Nhibernate)科盛,iBATIS,mybatis菜皂,EclipseLink贞绵,JFinal。

  • ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),在我們想到描述的時候自然就想到了xml和特性(Attribute).目前的ORM框架中,Hibernate就是典型的使用xml文件作為描述實體對象的映射框架,而大名鼎鼎的Linq則是使用特性(Attribute)來描述的幌墓。

什么是ORM

即Object-Relationl Mapping但壮,它的作用是在關系型數(shù)據(jù)庫和對象之間作一個映射冀泻,這樣,我們在具體的操作數(shù)據(jù)庫的時候蜡饵,就不需要再去和復雜的SQL語句打交道弹渔,只要像平時操作對象一樣操作它就可以了 。

為什么要做持久化和ORM設計(重要)

在目前的企業(yè)應用系統(tǒng)設計中溯祸,MVC肢专,即 Model(模型)- View(視圖)- Control(控制)為主要的系統(tǒng)架構模式。MVC 中的 Model 包含了復雜的業(yè)務邏輯和數(shù)據(jù)邏輯焦辅,以及數(shù)據(jù)存取機制(如 JDBC的連接博杖、SQL生成和Statement創(chuàng)建、還有ResultSet結果集的讀取等)等筷登。將這些復雜的業(yè)務邏輯和數(shù)據(jù)邏輯分離剃根,以將系統(tǒng)的緊耦 合關系轉化為松耦合關系(即解耦合),是降低系統(tǒng)耦合度迫切要做的前方,也是持久化要做的工作狈醉。MVC 模式實現(xiàn)了架構上將表現(xiàn)層(即View)和數(shù)據(jù)處理層(即Model)分離的解耦合,而持久化的設計則實現(xiàn)了數(shù)據(jù)處理層內(nèi)部的業(yè)務邏輯和數(shù)據(jù)邏輯分離的解耦合惠险。 而 ORM 作為持久化設計中的最重要也最復雜的技術苗傅,也是目前業(yè)界熱點技術。

簡單來說班巩,按通常的系統(tǒng)設計渣慕,使用 JDBC 操作數(shù)據(jù)庫,業(yè)務處理邏輯和數(shù)據(jù)存取邏輯是混雜在一起的抱慌。
一般基本都是如下幾個步驟:

  • 1逊桦、建立數(shù)據(jù)庫連接,獲得 Connection 對象遥缕。

  • 2卫袒、根據(jù)用戶的輸入組裝查詢 SQL 語句宵呛。

  • 3单匣、根據(jù) SQL 語句建立 Statement 對象 或者 PreparedStatement 對象。

  • 4宝穗、用 Connection 對象執(zhí)行 SQL語句户秤,獲得結果集 ResultSet 對象。

  • 5逮矛、然后一條一條讀取結果集 ResultSet 對象中的數(shù)據(jù)鸡号。

  • 6、根據(jù)讀取到的數(shù)據(jù)须鼎,按特定的業(yè)務邏輯進行計算鲸伴。

  • 7府蔗、根據(jù)計算得到的結果再組裝更新 SQL 語句。

  • 8汞窗、再使用 Connection 對象執(zhí)行更新 SQL 語句姓赤,以更新數(shù)據(jù)庫中的數(shù)據(jù)。

  • 7仲吏、最后依次關閉各個 Statement 對象和 Connection 對象不铆。

  • 舉例來說,比如要完成一個購物打折促銷的程序裹唆,用 ORM 思想將如下實現(xiàn),業(yè)務邏輯如下:

public Double calcAmount(String customerid, double amount) 
{
    // 根據(jù)客戶ID獲得客戶記錄
    Customer customer = CustomerManager.getCustomer(custmerid); 
    // 根據(jù)客戶等級獲得打折規(guī)則
    Promotion promotion = PromotionManager.getPromotion(customer.getLevel()); 
    // 累積客戶總消費額誓斥,并保存累計結果
    customer.setSumAmount(customer.getSumAmount().add(amount); 
    CustomerManager.save(customer); 
    // 返回打折后的金額
    return amount.multiply(protomtion.getRatio()); 
}
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市许帐,隨后出現(xiàn)的幾起案子劳坑,更是在濱河造成了極大的恐慌,老刑警劉巖成畦,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泡垃,死亡現(xiàn)場離奇詭異,居然都是意外死亡羡鸥,警方通過查閱死者的電腦和手機蔑穴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惧浴,“玉大人存和,你說我怎么就攤上這事≈月茫” “怎么了捐腿?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柿顶。 經(jīng)常有香客問我茄袖,道長,這世上最難降的妖魔是什么嘁锯? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任宪祥,我火速辦了婚禮,結果婚禮上家乘,老公的妹妹穿的比我還像新娘蝗羊。我一直安慰自己,他們只是感情好仁锯,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布耀找。 她就那樣靜靜地躺著,像睡著了一般业崖。 火紅的嫁衣襯著肌膚如雪野芒。 梳的紋絲不亂的頭發(fā)上蓄愁,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音狞悲,去河邊找鬼涝登。 笑死,一個胖子當著我的面吹牛效诅,可吹牛的內(nèi)容都是我干的胀滚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼乱投,長吁一口氣:“原來是場噩夢啊……” “哼咽笼!你這毒婦竟也來了?” 一聲冷哼從身側響起戚炫,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剑刑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后双肤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體施掏,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年茅糜,在試婚紗的時候發(fā)現(xiàn)自己被綠了七芭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔑赘,死狀恐怖狸驳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缩赛,我是刑警寧澤耙箍,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站酥馍,受9級特大地震影響辩昆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旨袒,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一汁针、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峦失,春花似錦扇丛、人聲如沸术吗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽较屿。三九已至隧魄,卻和暖如春卓练,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背购啄。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工襟企, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狮含。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓顽悼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親几迄。 傳聞我的和親對象是個殘疾皇子蔚龙,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一、正常步驟映胁,用戶操作原生并告知RN 項目要用到原生收到推送時木羹,給JS發(fā)送通知,首先找了這篇16年文章 : htt...
    無物見心閱讀 2,441評論 1 1
  • 由于有些低版本的瀏覽器還不支持ES6的語法解孙,所以在不使用框架的情況下坑填,需要將ES6語法轉換為ES5語法下面我在VS...
    喵嗚Yuri閱讀 224評論 0 1
  • No.27 前天有人問我,現(xiàn)在這樣辛苦弛姜,若是可以脐瑰,為什么不換一份更輕松的工作呢?我說廷臼,你說得對蚪黑,只是我是這樣選擇的...
    水淺_bling閱讀 862評論 0 0
  • 隨便著知識變現(xiàn)的熱潮,寫作成了一個很熱門的話題中剩,仿佛一夜之間忌穿,關于寫作的培訓班訓練營遍地開花。全民寫作看起來其樂融...
    冰封斜陽閱讀 199評論 0 1
  • 時間過的真快结啼,NLP執(zhí)行師畢業(yè)有一個月了掠剑,今天6月第2天,5月回來已經(jīng)晨跑一個月了郊愧,剛開始從來沒想過大家經(jīng)常所提的...
    elsazhang66閱讀 185評論 0 0