數(shù)據(jù)庫語句的區(qū)分
5.10. Mybatis解決jdbc編程的問題
1、 數(shù)據(jù)庫連接創(chuàng)建废膘、釋放頻繁造成系統(tǒng)資源浪費從而影響系統(tǒng)性能旬薯,如果使用數(shù)據(jù)庫連接池可解決此問題。
解決:在SqlMapConfig.xml中配置數(shù)據(jù)連接池敛劝,使用連接池管理數(shù)據(jù)庫鏈接余爆。
2、 Sql語句寫在代碼中造成代碼不易維護夸盟,實際應用sql變化的可能較大蛾方,sql變動需要改變java代碼。
解決:將Sql語句配置在XXXXmapper.xml文件中與java代碼分離上陕。
3桩砰、 向sql語句傳參數(shù)麻煩,因為sql語句的where條件不一定释簿,可能多也可能少亚隅,占位符需要和參數(shù)一一對應。
解決:Mybatis自動將java對象映射至sql語句庶溶,通過statement中的parameterType定義輸入?yún)?shù)的類型煮纵。
4懂鸵、 對結果集解析麻煩,sql變化導致解析代碼變化行疏,且解析前需要遍歷匆光,如果能將數(shù)據(jù)庫記錄封裝成pojo對象解析比較方便。
解決:Mybatis自動將sql執(zhí)行結果映射至java對象酿联,通過statement中的resultType定義輸出結果的類型终息。
5.11. mybatis與hibernate不同
Mybatis和hibernate不同,它不完全是一個ORM框架贞让,因為MyBatis需要程序員自己編寫Sql語句周崭。mybatis可以通過XML或注解方式靈活配置要運行的sql語句,并將java對象和sql語句映射生成最終執(zhí)行的sql震桶,最后將sql執(zhí)行的結果再映射生成java對象休傍。
Mybatis學習門檻低,簡單易學蹲姐,程序員直接編寫原生態(tài)sql磨取,可嚴格控制sql執(zhí)行性能,靈活度高柴墩,非常適合對關系數(shù)據(jù)模型要求不高的軟件開發(fā)忙厌,例如互聯(lián)網(wǎng)軟件、企業(yè)運營類軟件等江咳,因為這類軟件需求變化頻繁逢净,一但需求變化要求成果輸出迅速。但是靈活的前提是mybatis無法做到數(shù)據(jù)庫無關性歼指,如果需要實現(xiàn)支持多種數(shù)據(jù)庫的軟件則需要自定義多套sql映射文件爹土,工作量大。
Hibernate對象/關系映射能力強踩身,數(shù)據(jù)庫無關性好胀茵,對于關系模型要求高的軟件(例如需求固定的定制化軟件)如果用hibernate開發(fā)可以節(jié)省很多代碼,提高效率挟阻。但是Hibernate的學習門檻高琼娘,要精通門檻更高,而且怎么設計O/R映射附鸽,在性能和對象模型之間如何權衡脱拼,以及怎樣用好Hibernate需要具有很強的經驗和能力才行。
總之坷备,按照用戶的需求在有限的資源環(huán)境下只要能做出維護性熄浓、擴展性良好的軟件架構都是好架構,所以框架只有適合才是最好省撑。