hibernate工作使用步驟 spring事務(wù) hibernate執(zhí)行順序
spring事務(wù) hibernate執(zhí)行順序在Spring Servic“mybatis”和“hibernate”的區(qū)別是什么?Mybatis是一個(gè)類似hibernate的orm數(shù)據(jù)庫(kù)框架。它與hib
spring事務(wù) hibernate執(zhí)行順序
在Spring Servic
“mybatis”和“hibernate”的區(qū)別是什么?
Mybatis是一個(gè)類似hibernate的orm數(shù)據(jù)庫(kù)框架。它與hibernate非常不同,有以下幾點(diǎn):
總而言之:
Mybatis:小巧、方便、高效、簡(jiǎn)單、直接、半自動(dòng)。
Hibernate:強(qiáng)大、便捷、高效、復(fù)雜、曲折、全自動(dòng)。
1.hibernate是全自動(dòng)的,mybatis是半自動(dòng)的。
Hibernate可以自動(dòng)生成sql。Mybatis只有基本的字段映射,仍然需要手寫sql來(lái)實(shí)現(xiàn)和管理。
2.hibernate數(shù)據(jù)庫(kù)比mybatis可移植性強(qiáng)很多。
Hibernate大大降低了對(duì)象和數(shù)據(jù)庫(kù)(oracle、mysql等)之間的耦合。)通過(guò)其強(qiáng)大的映射結(jié)構(gòu)和hql語(yǔ)言,而mybatis需要手工編寫sql,所以其可移植性會(huì)大大降低,成本也非常高。
3.hibernate有完整的日志系統(tǒng),mybatis缺少一些。
Hibernate日志系統(tǒng)很健全,涉及面也很廣,而mybatis除了基本的記錄功能,還有很多弱功能。
相比hibernate需要關(guān)心很多細(xì)節(jié)。
Hibernate配置比mybatis復(fù)雜很多,學(xué)習(xí)成本也比mybatis高。但正是因?yàn)閙ybatis使用簡(jiǎn)單,所以它比hibernate更在意很多技術(shù)細(xì)節(jié)。因?yàn)辂湴偷偎箾](méi)有。;t不需要考慮很多細(xì)節(jié),開發(fā)模式和傳統(tǒng)jdbc有很大不同,而hibernate正好相反。但是,如果你熟練使用hibernate,其實(shí)開發(fā)效率并不比mybatis差甚至更好。
5.在SQL的直接優(yōu)化上,mybatis比hibernate方便多了。
因?yàn)閙ybatis的sql是用xml寫的,所以優(yōu)化sql比hibernate方便很多。然而,許多hibernate 的sql是自動(dòng)生成的,所以不可能直接維護(hù)SQL。簡(jiǎn)而言之,hibernate寫sql不如mybatis靈活。
mybatis:
1.入口簡(jiǎn)單,就是易學(xué)易用,提供數(shù)據(jù)庫(kù)查詢。自動(dòng)對(duì)象綁定功能。
2.可以進(jìn)行更細(xì)致的SQL優(yōu)化,減少查詢字段。
3.缺點(diǎn)是框架還是比較簡(jiǎn)單,功能還是缺失。雖然簡(jiǎn)化了數(shù)據(jù)綁定代碼,但是整個(gè)底層數(shù)據(jù)庫(kù)查詢實(shí)際上都是自己寫的,工作量比較大,不容易適應(yīng)快速的數(shù)據(jù)庫(kù)修改。
4.二級(jí)緩存機(jī)制不好。
休眠:
1.功能強(qiáng)大,數(shù)據(jù)庫(kù)獨(dú)立性好,O/R映射能力強(qiáng)。
2.有更好的二級(jí)緩存機(jī)制,可以使用第三方緩存。
3.缺點(diǎn)是學(xué)習(xí)門檻不低,熟練門檻較高,如何設(shè)計(jì)O/R映射,如何在性能和對(duì)象模型之間取得平衡,如何用好Hibernate,都需要你的經(jīng)驗(yàn)和能力。
舉個(gè)形象的比喻:
Mybatis:機(jī)械工具很好用。你什么時(shí)候帶都可以用,但是工作還是要自己做。
Hibernate:智能機(jī)器人,但是開發(fā)它的成本(學(xué)習(xí)和熟練度)很高,工作可以擺脫它,但是受限于它能做什么。