相同點:都是ORM框架,對jdbc進行了封裝。
不同點:iBatis需要手寫sql,hibernate不需要手寫sql,因此iBatis對程序員的sql功底要求高,對數(shù)據(jù)庫的操作也更加靈活。
iBatis可以對sql進行優(yōu)化,提高性能,hibernate的sql為自動生成,在sql優(yōu)化方面會很麻煩。
iBatis的sql是手寫的對多表的查詢更加方便,而hibernate的連表查詢需要拼復雜的HQL語句。
iBatis還可以使用數(shù)據(jù)庫特有的特性,hibernate只能用標準的sql。
iBatis數(shù)據(jù)庫的相關(guān)性強,在進行數(shù)據(jù)庫移植時需要修改大量的sql,hibernate在數(shù)據(jù)庫移植時與數(shù)據(jù)庫基本無關(guān)。
ibatis的好處:屏蔽jdbc api的底層訪問細節(jié);將sql語句與java代碼進行分離;提供了將結(jié)果集自動封裝稱為實體對象和對象的集合的功能,queryForList返回對象集合,用queryForObject返回單個對象;提供了自動將實體對象的屬性傳遞給sql語句的參數(shù)。
Hibernate是一個全自動的orm映射工具,它可以自動生成sql語句,ibatis需要我們自己在xml配置文件中寫sql語句,hibernate要比ibatis功能負責和強大很多。因為hibernate自動生成sql語句,我們無法控制該語句,我們就無法去寫特定的高效率的sql。對于一些不太復雜的sql查詢,hibernate可以很好幫我們完成,但是,對于特別復雜的查詢,hibernate就很難適應了,這時候用ibatis就是不錯的選擇,因為ibatis還是由我們自己寫sql語句。
遠近互聯(lián)技術(shù)-劉 整理發(fā)布,希望能對同是技術(shù)的你有所幫助。
遠近互聯(lián)專業(yè)提供網(wǎng)站建設(shè)、APP開發(fā)、網(wǎng)站優(yōu)化、外貿(mào)網(wǎng)站SEO、微信運營的品牌整合營銷服務,讓客戶通過網(wǎng)絡(luò)品牌建立與網(wǎng)絡(luò)傳播提高業(yè)績。






