代做安裝預(yù)算的網(wǎng)站青島網(wǎng)站建設(shè)
目錄:
- 第一題. MyBatis是什么?
- 第二題. ORM是什么?
- 第三題. 為什么說(shuō)Mybatis是半自動(dòng)ORM映射工具?它與全自動(dòng)的區(qū)別在哪里?
- 第四題. 傳統(tǒng)JDBC開(kāi)發(fā)存在的問(wèn)題
- 第五題. JDBC編程有哪些不足之處,MyBatis是如何解決這些問(wèn)題的?
第一題. MyBatis是什么?
MyBatis 是一款優(yōu)秀的持久層框架,一個(gè)半 ORM(對(duì)象關(guān)系映射)框架,它支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡(jiǎn)單的 XML 或注解來(lái)配置和映射原生類(lèi)型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式Java 對(duì)象)為數(shù)據(jù)庫(kù)中的記錄。
第二題. ORM是什么?
ORM(Object Relational Mapping),對(duì)象關(guān)系映射,是一種為了解決關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)與簡(jiǎn)單Java對(duì)象(POJO)的映射關(guān)系的技術(shù)。簡(jiǎn)單的說(shuō),ORM是通過(guò)使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù),將程序中的對(duì)象自動(dòng)持久化到關(guān)系型數(shù)據(jù)庫(kù)中。
第三題. 為什么說(shuō)Mybatis是半自動(dòng)ORM映射工具?它與全自動(dòng)的區(qū)別在哪里?
Hibernate屬于全自動(dòng)ORM映射工具,使用Hibernate查詢(xún)關(guān)聯(lián)對(duì)象或者關(guān)聯(lián)集合對(duì)象時(shí),可以根據(jù)對(duì)象關(guān)系模型直接獲取,所以它是全自動(dòng)的。而Mybatis在查詢(xún)關(guān)聯(lián)對(duì)象或關(guān)聯(lián)集合對(duì)象時(shí),需要手動(dòng)編寫(xiě)sql來(lái)完成,所以,稱(chēng)之為半自動(dòng)ORM映射工具。
第四題. 傳統(tǒng)JDBC開(kāi)發(fā)存在的問(wèn)題
- 頻繁創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象、釋放,容易造成系統(tǒng)資源浪費(fèi),影響系統(tǒng)性能??梢允褂眠B接池解決這個(gè)問(wèn)題。但是使用jdbc需要自己實(shí)現(xiàn)連接池。
- sql語(yǔ)句定義、參數(shù)設(shè)置、結(jié)果集處理存在硬編碼。實(shí)際項(xiàng)目中sql語(yǔ)句變化的可能性較大,一旦發(fā)生變化,需要修改java代碼,系統(tǒng)需要重新編譯,重新發(fā)布。不好維護(hù)。
- 使用preparedStatement向占有位符號(hào)傳參數(shù)存在硬編碼,因?yàn)閟ql語(yǔ)句的where條件不一定,可能多也可能少,修改sql還要修改代碼,系統(tǒng)不易維護(hù)。
- 結(jié)果集處理存在重復(fù)代碼,處理麻煩。如果可以映射成Java對(duì)象會(huì)比較方便
第五題. JDBC編程有哪些不足之處,MyBatis是如何解決這些問(wèn)題的?
- 數(shù)據(jù)庫(kù)鏈接創(chuàng)建、釋放頻繁造成系統(tǒng)資源浪費(fèi)從而影響系統(tǒng)性能,如果使用數(shù)據(jù)庫(kù)連接池可解決此問(wèn)題。
解決:在mybatis-config.xml中配置數(shù)據(jù)鏈接池,使用連接池管理數(shù)據(jù)庫(kù)連接。 - Sql語(yǔ)句寫(xiě)在代碼中造成代碼不易維護(hù),實(shí)際應(yīng)用sql變化的可能較大,sql變動(dòng)需要改變java代碼。
解決:將Sql語(yǔ)句配置在XXXXmapper.xml文件中與java代碼分離。 - 向sql語(yǔ)句傳參數(shù)麻煩,因?yàn)閟ql語(yǔ)句的where條件不一定,可能多也可能少,占位符需要和參數(shù)一一對(duì)應(yīng)。
解決: Mybatis自動(dòng)將java對(duì)象映射至sql語(yǔ)句。 - 對(duì)結(jié)果集解析麻煩,sql變化導(dǎo)致解析代碼變化,且解析前需要遍歷,如果能將數(shù)據(jù)庫(kù)記錄封裝成pojo對(duì)象解析比較方便。
解決:Mybatis自動(dòng)將sql執(zhí)行結(jié)果映射至java對(duì)象。
如果我的內(nèi)容對(duì)你有幫助,請(qǐng)點(diǎn)贊,評(píng)論,收藏。創(chuàng)作不易,大家的支持就是我堅(jiān)持下去的動(dòng)力