更新時(shí)間:2020-05-04 來源:黑馬程序員 瀏覽量:
MyBatis(前身是iBatis)是一個(gè)支持普通SQL查詢、存儲(chǔ)過程以及高級(jí)映射的持久層框架,它消除了幾乎所有的JDBC代碼和參數(shù)的手動(dòng)設(shè)置以及對(duì)結(jié)果集的檢索,并使用簡(jiǎn)單的XML或注解進(jìn)行配置和原始映射,用以將接口和Java的POJO(Plain Old Java Object,普通Java對(duì)象)映射成數(shù)據(jù)庫中的記錄,使得Java開發(fā)人員可以使用面向?qū)ο蟮木幊趟枷雭聿僮鲾?shù)據(jù)庫。
MyBatis 框架也被稱之為 ORM(Object/Relational Mapping,即對(duì)象關(guān)系映射)框架。所謂的 ORM 就是一種為了解決面向?qū)ο笈c關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)類型不匹配的技術(shù),它通過描述Java對(duì)象與數(shù)據(jù)庫表之間的映射關(guān)系,自動(dòng)將Java應(yīng)用程序中的對(duì)象持久化到關(guān)系型數(shù)據(jù)庫的表中。ORM框架的工作原理如下圖所示。
從上圖可以看出,使用ORM框架后,應(yīng)用程序不再直接訪問底層數(shù)據(jù)庫,而是以面向?qū)ο蟮姆绞絹聿僮鞒志没瘜?duì)象(Persisent Object,PO),而ORM框架則會(huì)通過映射關(guān)系將這些面向?qū)ο蟮牟僮鬓D(zhuǎn)換成底層的SQL操作。
當(dāng)前的ORM框架產(chǎn)品有很多,常見的ORM框架有Hibernate和MyBatis。這兩個(gè)框架的主要區(qū)別如下。
·Hibernate:是一個(gè)全表映射的框架。通常開發(fā)者只需定義好持久化對(duì)象到數(shù)據(jù)庫表的映射關(guān)系,就可以通過 Hibernate 提供的方法完成持久層操作。開發(fā)者并不需要熟練地掌握 SQL語句的編寫,Hibernate會(huì)根據(jù)制定的存儲(chǔ)邏輯,自動(dòng)的生成對(duì)應(yīng)的SQL,并調(diào)用JDBC接口來執(zhí)行,所以其開發(fā)效率會(huì)高于MyBatis。然而Hibernate自身也存在著一些缺點(diǎn),例如它在多表關(guān)聯(lián)時(shí),對(duì) SQL 查詢的支持較差;更新數(shù)據(jù)時(shí),需要發(fā)送所有字段;不支持存儲(chǔ)過程;不能通過優(yōu)化 SQL 來優(yōu)化性能等。這些問題導(dǎo)致其只適合在場(chǎng)景不太復(fù)雜且對(duì)性能要求不高的項(xiàng)目中使用。
·MyBatis:是一個(gè)半自動(dòng)映射的框架。這里所謂的“半自動(dòng)”是相對(duì)于Hibernate全表映射而言的,MyBatis 需要手動(dòng)匹配提供 POJO、SQL和映射關(guān)系,而Hibernate只需提供POJO 和映射關(guān)系即可。與Hibernate相比,雖然使用MyBatis手動(dòng)編寫 SQL 要比使用Hibernate的工作量大,但MyBatis可以配置動(dòng)態(tài)SQL并優(yōu)化SQL,可以通過配置決定SQL的映射規(guī)則,它還支持存儲(chǔ)過程等。對(duì)于一些復(fù)雜的和需要優(yōu)化性能的項(xiàng)目來說,顯然使用MyBatis更加合適。推薦了解黑馬程序員java中級(jí)程序員課程。
猜你喜歡:
微服務(wù)架構(gòu)的技術(shù)選型你知道怎么選嗎?