免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
jdbc,mybatis,hibernate各自優(yōu)缺點及區(qū)別
先比較下jdbc編程和hibernate編程各自的優(yōu)缺點。
   JDBC:
   我們平時使用jdbc進行編程,大致需要下面幾個步驟:
   1,使用jdbc編程需要連接數(shù)據(jù)庫,注冊驅(qū)動和數(shù)據(jù)庫信息
   2,操作Connection,打開Statement對象
   3,通過Statement對象執(zhí)行SQL,返回結(jié)果到ResultSet對象
   4,使用ResultSet讀取數(shù)據(jù),然后通過代碼轉(zhuǎn)化為具體的POJO對象
   5,關(guān)閉數(shù)據(jù)庫相關(guān)的資源
  jdbc的缺點:
  一:工作量比較大,需要連接,然后處理jdbc底層事務(wù),處理數(shù)據(jù)類型,還需要操作Connection,Statement對象和ResultSet對象去拿數(shù)據(jù)并關(guān)閉他們。
   二:我們對jdbc編程可能產(chǎn)生的異常進行捕捉處理并正確關(guān)閉資源
   由于JDBC存在的缺陷,在實際工作中我們很少直接使用jdbc進行編程,用的更多的是ORM對象關(guān)系模型來操作數(shù)據(jù)庫,Hibernate就是一個ORM模型
     Hibernate:
    Hibernate是建立在若干POJO通過xml映射文件(或注解)提供的規(guī)則映射到數(shù)據(jù)庫表上的。我們可以通過POJO直接操作數(shù)據(jù)庫的數(shù)據(jù),他提供的是一種全表映射的模型。相對而言,Hibernate對JDBC的封裝程度還是比較高的,我們已經(jīng)不需要寫SQL,只要使用HQL語言就可以了。
    使用Hibernate進行編程有以下好處:
    1,消除了代碼的映射規(guī)則,它全部分離到了xml或者注解里面去配置。
    2,無需在管理數(shù)據(jù)庫連接,它也配置到xml里面了。
    3,一個會話中不需要操作多個對象,只需要操作Session對象。
    4,關(guān)閉資源只需要關(guān)閉一個Session便可。
    這就是Hibernate的優(yōu)勢,在配置了映射文件和數(shù)據(jù)庫連接文件后,Hibernate就可以通過Session操作,非常容易,消除了jdbc帶來的大量代碼,大大提高了編程的簡易性和可讀性。Hibernate還提供了級聯(lián),緩存,映射,一對多等功能。Hibernate是全表映射,通過HQL去操作pojo進而操作數(shù)據(jù)庫的數(shù)據(jù)。
    Hibernate的缺點:
    1,全表映射帶來的不便,比如更新時需要發(fā)送所有的字段。
    2,無法根據(jù)不同的條件組裝不同的SQL。
    3,對多表關(guān)聯(lián)和復(fù)雜的sql查詢支持較差,需要自己寫sql,返回后,需要自己將數(shù)據(jù)封裝為pojo。
    4,不能有效的支持存儲過程。
    5,雖然有HQL,但是性能較差,大型互聯(lián)網(wǎng)系統(tǒng)往往需要優(yōu)化sql,而hibernate做不到。
Mybatis:
    為了解決Hibernate的不足,Mybatis出現(xiàn)了,Mybatis是半自動的框架。之所以稱它為半自動,是因為它需要手工匹配提供POJO,sql和映射關(guān)系,而全表映射的Hibernate只需要提供pojo和映射關(guān)系即可。
   Mybatis需要提供的映射文件包含了一下三個部分:sql,映射規(guī)則,pojo。在Mybatis里面你需要自己編寫sql,雖然比Hibernate配置多,但是Mybatis可以配置動態(tài)sql,解決了hibernate表名根據(jù)時間變化,不同條件下列不一樣的問題,同時你也可以對sql進行優(yōu)化,通過配置決定你的sql映射規(guī)則,也能支持存儲過程,所以對于一些復(fù)雜和需要優(yōu)化性能的sql查詢它就更加方便。Mybatis幾乎可以做到j(luò)dbc所有能做到的事情。
什么時候使用Hibernate,Mybatis
    Hibernate作為留下的Java orm框架,它確實編程簡易,需要我們提供映射的規(guī)則,完全可以通過IDE生成,同時無需編寫sql確實開發(fā)效率優(yōu)于Mybatis。此外Hibernate還提供了緩存,日志,級聯(lián)等強大的功能,但是Hibernate的缺陷也是十分明顯,多表關(guān)聯(lián)復(fù)雜sql,數(shù)據(jù)系統(tǒng)權(quán)限限制,根據(jù)條件變化的sql,存儲過程等場景使用Hibernate十分不方便,而性能又難以通過sql優(yōu)化,所以注定了Hibernate只適用于在場景不太復(fù)雜,要求性能不太苛刻的時候使用。
    如果你需要一個靈活的,可以動態(tài)生成映射關(guān)系的框架,那么Mybatis確實是一個最好的選擇。它幾乎可以替代jdbc,擁有動態(tài)列,動態(tài)表名,存儲過程支持,同時提供了簡易的緩存,日志,級聯(lián)。但是它的缺陷是需要你提供映射規(guī)則和sql,所以開發(fā)工作量比hibernate要大些。
1)從層次上看,JDBC是較底層的持久層操作方式,而Hibernate和MyBatis都是在JDBC的基礎(chǔ)上進行了封裝使其更加方便程序員對持久層的操作。
2)從功能上看,JDBC就是簡單的建立數(shù)據(jù)庫連接,然后創(chuàng)建statement,將sql語句傳給statement去執(zhí)行,如果是有返回結(jié)果的查詢語句,會將查詢結(jié)果放到ResultSet對象中,通過對ResultSet對象的遍歷操作來獲取數(shù)據(jù);Hibernate是將數(shù)據(jù)庫中的數(shù)據(jù)表映射為持久層的Java對象,對sql語句進行修改和優(yōu)化比較困難;MyBatis是將sql語句中的輸入?yún)?shù)和輸出參數(shù)映射為java對象,sql修改和優(yōu)化比較方便.
3)從使用上看,如果進行底層編程,而且對性能要求極高的話,應(yīng)該采用JDBC的方式;如果要對數(shù)據(jù)庫進行完整性控制的話建議使用Hibernate;如果要靈活使用sql語句的話建議采用MyBatis框架。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mybatis和hibernate的對比總結(jié)
01 | 常見持久層框架賞析,到底是什么讓你選擇 MyBatis?
hibernate框架
隨筆
XXXX項目hibernate與應(yīng)用緩存方案總結(jié)
Hibernate基礎(chǔ)總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服