基于前面章節(jié)的基礎(chǔ)早敬,我們實現(xiàn)了一個Mybatis框架的雛形,在完成了MyBatis雛形的基礎(chǔ)之上大脉,會對我們后續(xù)的MyBatis源碼剖析的課程有一個極大的幫助搞监,當(dāng)然我們之前自定義持久層框架的功能并不是很完善,所以我們在實際應(yīng)用當(dāng)中還是會運用MyBatis镰矿,所以我們還是需要把關(guān)注點放到MyBatis之上
一琐驴、首先我們來了解一下MyBatis的相關(guān)概念
眾所周知,MyBatis是一持久層框架,但是只知道是一個持久層框架是遠遠不夠的绝淡,我們還需要知道具體的特點宙刘,MyBatis是一個基于ORM的半自動及輕量級持久層框架
1、什么是ORM呢牢酵?
ORM全稱Object/Relation Mapping:表示對象-關(guān)系映射的縮寫
ORM完成?向?qū)ο蟮木幊陶Z?到關(guān)系數(shù)據(jù)庫的映射悬包。當(dāng)ORM框架完成映射后,程序員既可以利??向?qū)ο蟪绦蛟O(shè)計語?的簡單易?性馍乙,?可以利?關(guān)系數(shù)據(jù)庫的技術(shù)優(yōu)勢布近。ORM把關(guān)系數(shù)據(jù)庫包裝成?向?qū)ο蟮哪P汀RM框架是?向?qū)ο笤O(shè)計語?與關(guān)系數(shù)據(jù)庫發(fā)展不同步時的中間解決?案丝格。采?ORM框架后撑瞧,應(yīng)?程序不再直接訪問底層數(shù)據(jù)庫,?是以?向?qū)ο蟮姆潘蓙聿僮鞒志没瘜ο螅?ORM框架則將這些?向?qū)ο蟮牟僮鬓D(zhuǎn)換成底層SQL操作显蝌。ORM框架實現(xiàn)的效果:把對持久化對象的保存预伺、修改、刪除等操作曼尊,轉(zhuǎn)換為對數(shù)據(jù)庫的操作
通俗的講ORM就是對象關(guān)系映射酬诀,通過對象關(guān)系映射,可以將我們對數(shù)據(jù)庫的操作轉(zhuǎn)換成基于面向?qū)ο蟮牟僮髀嫫玻瑢?shù)據(jù)庫的操作料滥,就是對對象的操作
2、半自動指的又是什么呢艾船?
半自動就是在使用MyBatis的過程當(dāng)中,我們還需要手動編寫SQL語句高每,有半自動就有全自動屿岂,都是相對而言的,如我們熟知的Hibernate就屬于全自動持久層框架鲸匿,在使用Hibernate的時候爷怀,我們可以無需編寫SQL語句,只需操作持久化對象带欢,就可完成對數(shù)據(jù)庫表的增刪改查操作运授,兩個框架都有相對的優(yōu)勢和缺點,使用全自動框架由于底層已經(jīng)完成了對SQL語句的封裝乔煞,所以我們失去了對SQL進行優(yōu)化的權(quán)力吁朦,使用半自動框架,我們需要手動編寫SQL語句渡贾,我們可以對自己編寫的SQL語句進行進一步的優(yōu)化逗宜,執(zhí)行效率會比全自動框架的高一些
3、什么是輕量級
輕量級指的就是框架在啟動的過程當(dāng)中所耗費資源的多少,像之前的EJB啟動的時候耗費的資源較多纺讲,所以我們稱之為重量級框架擂仍,現(xiàn)在市面上較多的都是輕量級的框架了,啟動的時候耗費的資源都較少熬甚,而MyBatis就是一個輕量級的持久層框架
MyBatis底層還是對JDBC代碼的一個封裝逢渔,在封裝的過程當(dāng)中,MyBatis將JDBC存在的一些問題(硬編碼乡括、頻繁創(chuàng)建數(shù)據(jù)庫連接肃廓,手動封裝返回結(jié)果集和設(shè)置參數(shù)等)進行了規(guī)避
在使用MyBatis的過程中,我們會基于映射配置文件和基于注解兩種方式進行使用粟判,接下來的學(xué)習(xí)也會將兩種方式都進行學(xué)習(xí)和介紹
二亿昏、MyBatis歷史
原是apache的?個開源項?iBatis, 2010年6?這個項?由apache software foundation 遷移到了google code,隨著開發(fā)團隊轉(zhuǎn)投Google Code旗下档礁,ibatis3.x正式更名為Mybatis 角钩,代碼于2013年11?遷移到Github。
iBATIS?詞來源于“internet”和“abatis”的組合呻澜,是?個基于Java的持久層框架递礼。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)
三、MyBatis優(yōu)勢
Mybatis是?個半?動化的持久層框架羹幸,對開發(fā)?員開說脊髓,核?sql還是需要??進?優(yōu)化,sql和java編碼進?分離栅受,功能邊界清晰将硝,?個專注業(yè)務(wù),?個專注數(shù)據(jù)屏镊。
分析圖示如下:
上一篇筆記地址:http://www.reibang.com/p/d41016b44c42