第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)于mybatis和hibernate的困惑

關(guān)于mybatis和hibernate的困惑

寶慕林4294392 2019-03-13 14:15:40
由于java視頻里以前好多都是SSH。但是在實際工作中沒見過用hibernate的,基本都用mybatis。我有一些疑問:hibernate碰到什么樣的業(yè)務(wù)會變成致命的弱點,都說hibernate效率低,能否舉個例子(例如同一個查詢用mybatis查詢耗時1秒,用hibernate查詢耗時10秒)可能是有部分人遇到了hibernate的瓶頸,但是這部分人的業(yè)務(wù)量我覺得,不是大部分使用hibernate的人都能遇到的。一般的小項目,不超過100個用戶,這樣的項目綜合考慮的話更適合用mybatis還是hibernate?主要從開發(fā)效率上來說的話。為什么?謝謝
查看完整描述

17 回答

?
幕布斯6054654

TA貢獻1876條經(jīng)驗 獲得超7個贊

hibernate適合于都是單表的增刪改差,開發(fā)效率很高,可是一旦業(yè)務(wù)擴展或者當初db設(shè)計不好,需要連表查詢(因為hibernate的思想是對表的類化,但實際生活中要做到完全的類化在一個項目剛開始的時候是不容易做到的)不同的結(jié)果再加上刪選匹配的話效率就會下降(除非你寫sql,但是這樣一來還不如一開始用mybatis),尤其再遇到大數(shù)據(jù)量,效率成倍數(shù)下降。
不超過100個用戶?,這里的數(shù)量級不是按單表算的,單表如果超過一定數(shù)據(jù)量也不是簡單選用hibernatemybatis能解決的,只能說如果用mybatis的話比較好改而已。就我經(jīng)驗,如果涉及大量連表查詢且業(yè)務(wù)復(fù)雜的時候(通常項目到最后都是如此)最好用mybatis,簡單的還是hibernate快一些(開發(fā)效率

查看完整回答
反對 回復(fù) 2019-04-22
?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

hibernate學(xué)習(xí)成本比較高,但是j2ee里頭有JPA規(guī)范,學(xué)習(xí)規(guī)范也還可以。mybatis就相對來說簡單,容易上手,可控。hibernate學(xué)習(xí)成本高,過度面向?qū)ο?,難以調(diào)優(yōu)。至于使用的話,看個人了,對于toB或者toC的應(yīng)用比較偏向mybatis,但是對于做管理后臺這種,hibernate就可以


查看完整回答
反對 回復(fù) 2019-04-22
?
互換的青春

TA貢獻1797條經(jīng)驗 獲得超6個贊

下面的回答說的都挺好的,一是MyBatis學(xué)起來簡單,二是靈活,直接寫SQL易于掌控,至于性能都不是什么重點,開發(fā)效率、可維護性什么的比性能要重要的多。

查看完整回答
反對 回復(fù) 2019-04-22
?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

hiberbate是用java對象拼sql,mybatis是直接寫原生sql。前者開發(fā)一時爽,(修改)維護火葬場;后者需要對sql知識有一定了解(相比前者),如果公司有DBA的話,他看原生sql比看java代碼要直觀得多。至于性能什么的大部分情況下都不用考慮(真要考慮的話可以去搜一下近年來有些人討論過的“去ORM”),最重要的是可維護性可維護性可維護性。


查看完整回答
反對 回復(fù) 2019-04-22
?
慕沐林林

TA貢獻2016條經(jīng)驗 獲得超9個贊

hibernate、mybatis都只是對JDBC的封裝,程序性能好不好,主要還是看SQL寫得夠不夠優(yōu)秀,DB設(shè)計是不是合理,當然hibernate不少SQL是用程序方式實現(xiàn)的,如果兩個框架都很精通,使用起來性能上差別應(yīng)該不大,那么問題來了,hibernate封裝程度過高,想精通其實是挺困難的,mybatis則只是jdbc的簡單封裝,學(xué)習(xí)成本較低,而且hibernate很多場景下將sql封裝起來了,如果不是特別精通的話,有些時候?qū)懗鰜淼某绦驎霈F(xiàn)預(yù)料不到的情況,mybatis則因為較簡單,也沒做太多的事,所以程序運行結(jié)果通常比較容易預(yù)料到可能出現(xiàn)的問題。
兩個框架其實設(shè)計都很優(yōu)秀,個人使用習(xí)慣反而更重要,習(xí)慣于mybatis的人,一般很難會再切換到hibernate的,反之如果真正精通hibernate的人,應(yīng)該也不會刻意去使用mybatis(個人愚見)。

查看完整回答
反對 回復(fù) 2019-04-22
?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

實際工作中都使用Mybatis基本上并不是基于性能或者可用性上的考量,而是基于個人習(xí)慣。
像我們這些老程序員,寫SQL習(xí)慣了,不寫就難受。相比之下過于自動化的hibernate會讓我們感到恐慌。
僅此而已。

查看完整回答
反對 回復(fù) 2019-04-22
?
繁星coding

TA貢獻1797條經(jīng)驗 獲得超4個贊

學(xué)習(xí)階段使用過,hibernate 個人的感受是封裝的太死了。很多時候感覺帶來的不是方便,而是我要為了“配合”這個框架做一些看起來不必要的操作。


查看完整回答
反對 回復(fù) 2019-04-22
?
一只萌萌小番薯

TA貢獻1795條經(jīng)驗 獲得超7個贊

業(yè)務(wù)量比較小的話,就看你個人哪個比較熟練了。都可以。沒必要為這個糾結(jié)。mybatis的靈活性要高些,給開發(fā)人員更多自己實現(xiàn)的空間。hibernate的關(guān)聯(lián)應(yīng)該是稍慢一點的原因。


查看完整回答
反對 回復(fù) 2019-04-22
?
弒天下

TA貢獻1818條經(jīng)驗 獲得超8個贊

知乎上也有類似的問題。
看到高票的回答大致就是說,hibernatemybatis掌握難度要高一些,對sql的控制弱一些。

查看完整回答
反對 回復(fù) 2019-04-22
?
拉丁的傳說

TA貢獻1789條經(jīng)驗 獲得超8個贊

mb sql寫到xml里面不也需要解析么,效率也高不到哪里去吧


查看完整回答
反對 回復(fù) 2019-04-22
?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

對比這兩個之間的關(guān)系,從開發(fā)效率、可維護性、性能三個方面給出考慮。而就其重要性而言,在項目工程開發(fā)過程中,開發(fā)效率>可維護性>性能??赡軐τ谀承I(yè)務(wù)來說,性能更關(guān)鍵,但放眼全局,個人覺得開發(fā)效率>可維護性>性能。

首先來說,開發(fā)效率。個人感覺如果你是做一些簡單的CMS類似的只有簡單的增刪改查的項目,那么使用Hibernate更有優(yōu)勢,不需要掌握太多的Hibernate知識,只需要會一些基本的查詢和一些配置(Hibernate真正要學(xué)會,個人感覺知識量比mybatis大很多)。hiberbate是用java對象拼sql,mybatis是直接寫原生sql。hibernate提供了很好的映射機制,mybatis還需要自己寫resultmap paramMap這些東西。Hibernate和MyBatis都有相應(yīng)的代碼生成工具??梢陨珊唵位镜腄AO層方法。針對高級查詢,Mybatis需要手動編寫SQL語句,以及ResultMap。而Hibernate有良好的映射機制,開發(fā)者無需關(guān)心SQL的生成與結(jié)果映射,可以更專注于業(yè)務(wù)流程。綜上所述,那么從開發(fā)效率上來講,Hibernate> mybatis。

可維護性:hiberbate是用java對象拼sql,mybatis是直接寫原生sql。直接寫SQL更容易維護,而前者需要通過java對象來看SQL,你得把sql,用System.out.println(sql);把SQL打印出來,才可以看到。Hibernate的查詢會將表中的所有字段查詢出來,這一點會有性能消耗。Hibernate也可以自己寫SQL來指定需要查詢的字段,但這樣就破壞了Hibernate開發(fā)的簡潔性。而Mybatis的SQL是手動編寫的,所以可以按需求指定查詢的字段。Hibernate HQL語句的調(diào)優(yōu)需要將SQL打印出來,而Hibernate的SQL被很多人嫌棄因為太丑了。MyBatis的SQL是自己手動寫的所以調(diào)整方便。但Hibernate具有自己的日志統(tǒng)計。Mybatis本身不帶日志統(tǒng)計,使用Log4j進行日志記錄。

性能:兩者都提供了緩存,session機制。小項目兩者差不多吧.大型項目mybatis>hibernate。


查看完整回答
反對 回復(fù) 2019-04-22
?
至尊寶的傳說

TA貢獻1789條經(jīng)驗 獲得超10個贊

看大家討論感覺mybaits更好一樣,但當初一直以為hibernate更適合大型開發(fā)就直接走hibernate了。那時項目比較急,用得像mybatis一樣,后來玩久了,發(fā)現(xiàn)很多有趣的東西,hibernate提供的經(jīng)驗簡化了不少工作量和兼容性,但這些絕對需要有經(jīng)驗后才明白,加上后來有用上了hibernate search,全文檢索,也就沒法換了,反正寫原生sql也可以hql也可以,xml配置工具也有,輔助注解也靈活,甚至還能產(chǎn)生原生sql不一樣的one2many,many2many數(shù)據(jù)結(jié)構(gòu),總之就是太全面的一個大家伙了,還沒遇到后悔的時候,就繼續(xù)學(xué)吧。一般是用hibernate tools自動創(chuàng)建所有表的Java和xml的mapping做一般查刪改,然后復(fù)制Java代碼改名,用注解手工建關(guān)聯(lián),刪除不需要的字段。

查看完整回答
反對 回復(fù) 2019-04-22
?
梵蒂岡之花

TA貢獻1900條經(jīng)驗 獲得超5個贊

簡單來說,Hibernate 是面向?qū)ο蟮模琈yBatis 是面向 SQL 的。選哪個得看你的人員配置對哪個熟悉,業(yè)務(wù)會不會有很多復(fù)雜查詢,對性能要求高不高。另外,很多時候都是對 Hibernate 不熟悉,所以會覺得 Hibernate 做不了這個事情,或者做起來很復(fù)雜。Hibernate 表示這鍋我不背。。。


查看完整回答
反對 回復(fù) 2019-04-22
?
心有法竹

TA貢獻1866條經(jīng)驗 獲得超5個贊

個人還覺得hibernate 好用呢,自動建表,性能問題是關(guān)聯(lián)查詢。


查看完整回答
反對 回復(fù) 2019-04-22
?
LEATH

TA貢獻1936條經(jīng)驗 獲得超7個贊

技術(shù)沒有好壞,只有適不適合,在特定的情況下解決特定的問題。不同的人用hibernate,會產(chǎn)生不同的結(jié)果,如果你精通hibernate,性能一樣不是問題。看到樓上說了那么多二者的比較,其實真的沒有什么意義。


查看完整回答
反對 回復(fù) 2019-04-22
  • 17 回答
  • 0 關(guān)注
  • 716 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號