自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hibernate的優(yōu)點(diǎn)全解

開(kāi)發(fā) 后端
Hibernate是一個(gè)和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動(dòng),和數(shù)據(jù)庫(kù)都有一定的關(guān)系,但是和使用它的Java程序,和App Server沒(méi)有任何關(guān)系,也不存在兼容性問(wèn)題。

本文主要介紹Hibernate優(yōu)點(diǎn),下面就四點(diǎn)加以說(shuō)明,希望大家學(xué)習(xí)時(shí)能夠加以借鑒。

一、Hibernate優(yōu)點(diǎn)是JDBC的輕量級(jí)的對(duì)象封裝,它是一個(gè)獨(dú)立的對(duì)象持久層框架,和App Server,和EJB沒(méi)有什么必然的聯(lián)系。Hibernate可以用在任何JDBC可以使用的場(chǎng)合,例如Java應(yīng)用程序的數(shù)據(jù)庫(kù)訪問(wèn)代碼,DAO接口的實(shí)現(xiàn)類,甚至可以是BMP里面的訪問(wèn)數(shù)據(jù)庫(kù)的代碼。從這個(gè)意義上來(lái)說(shuō),Hibernate和EJB不是一個(gè)范疇的東西,也不存在非此即彼的關(guān)系。

二、Hibernate優(yōu)點(diǎn)是一個(gè)和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動(dòng),和數(shù)據(jù)庫(kù)都有一定的關(guān)系,但是和使用它的Java程序,和App Server沒(méi)有任何關(guān)系,也不存在兼容性問(wèn)題。

三、Hibernate優(yōu)點(diǎn)不能用來(lái)直接和Entity Bean做對(duì)比,只有放在整個(gè)J2EE項(xiàng)目的框架中才能比較。并且即使是放在軟件整體框架中來(lái)看,Hibernate也是做為JDBC的替代者出現(xiàn)的,而不是Entity Bean的替代者出現(xiàn)的,讓我再列一次我已經(jīng)列n次的框架結(jié)構(gòu):

傳統(tǒng)的架構(gòu):
1) Session Bean <-> Entity Bean <-> DB
為了解決性能障礙的替代架構(gòu):
2) Session Bean <-> DAO <-> JDBC <-> DB
使用Hibernate來(lái)提高上面架構(gòu)的開(kāi)發(fā)效率的架構(gòu):
3) Session Bean <-> DAO <-> Hibernate <-> DB

就上面3個(gè)架構(gòu)來(lái)分析:
1、內(nèi)存消耗:采用JDBC的架構(gòu)2無(wú)疑是最省內(nèi)存的,Hibernate的架構(gòu)3次之,EB的架構(gòu)1最差。

2、運(yùn)行效率:如果JDBC的代碼寫(xiě)的非常優(yōu)化,那么JDBC架構(gòu)運(yùn)行效率最高,但是實(shí)際項(xiàng)目中,這一點(diǎn)幾乎做不到,這需要程序員非常精通JDBC,運(yùn)用Batch語(yǔ)句,調(diào)整PreapredStatement的Batch Size和Fetch Size等參數(shù),以及在必要的情況下采用結(jié)果集cache等等。而一般情況下程序員是做不到這一點(diǎn)的。因此Hibernate架構(gòu)表現(xiàn)出最快的運(yùn)行效率。EB的架構(gòu)效率會(huì)差的很遠(yuǎn)。

3、開(kāi)發(fā)效率:在有JBuilder的支持下以及簡(jiǎn)單的項(xiàng)目,EB架構(gòu)開(kāi)發(fā)效率最高,JDBC次之,Hibernate最差。但是在大的項(xiàng)目,特別是持久層關(guān)系映射很復(fù)雜的情況下,Hibernate效率高的驚人,JDBC次之,而EB架構(gòu)很可能會(huì)失敗。

4、分布式,安全檢查,集群,負(fù)載均衡的支持
由于有SB做為Facade,3個(gè)架構(gòu)沒(méi)有區(qū)別。

四、EJB和Hibernate學(xué)習(xí)難度在哪里?

EJB的難度在哪里?不在復(fù)雜的XML配置文件上,而在于EJB運(yùn)用稍微不慎,就有嚴(yán)重的性能障礙。所以難在你需要學(xué)習(xí)很多EJB設(shè)計(jì)模式來(lái)避開(kāi)性能問(wèn)題,需要學(xué)習(xí)App Server和EJB的配置來(lái)優(yōu)化EJB的運(yùn)行效率。做EJB的開(kāi)發(fā)工作,程序員的大部分精力都被放到了EJB的性能問(wèn)題上了,反而沒(méi)有更多的精力關(guān)注本身就主要投入精力去考慮的對(duì)象持久層的設(shè)計(jì)上來(lái)。

Hibernate難在哪里?不在Hibernate本身的復(fù)雜,實(shí)際上Hibernate非常的簡(jiǎn)單,難在Hibernate太靈活了。

當(dāng)你用EJB來(lái)實(shí)現(xiàn)持久層的時(shí)候,你會(huì)發(fā)現(xiàn)EJB實(shí)在是太笨拙了,笨拙到你根本沒(méi)有什么可以選擇的余地,所以你根本就不用花費(fèi)精力去設(shè)計(jì)方案,去平衡方案的好壞,去費(fèi)腦筋考慮選擇哪個(gè)方案,因?yàn)橹挥形ㄒ坏姆桨笖[在你面前,你只能這么做,沒(méi)得選擇。

Hibernate相反,它太靈活了,相同的問(wèn)題,你至少可以設(shè)計(jì)出十幾種方案來(lái)解決,所以特別的犯難,究竟用這個(gè),還是用那個(gè)呢?這些方案之間到底有什么區(qū)別呢?他們的運(yùn)行原理有什么不同?運(yùn)行效率哪個(gè)比較好?光是主鍵生成,就有七八種方案供你選擇,你為難不為難?集合屬性可以用Set,可以用List,還可以用Bag,到底哪個(gè)效率高,你為難不為難?查詢可以用iterator,可以用list,哪個(gè)好,有什么區(qū)別?你為難不為難?復(fù)合主鍵你可以直接在hbm里面配置,也可以自定義CustomerType,哪種比較好些?你為難不為難?對(duì)于一個(gè)表,你可以選擇單一映射一個(gè)對(duì)象,也可以映射成父子對(duì)象,還可以映射成兩個(gè)1:1的對(duì)象,在什么情況下用哪種方案比較好,你為難不為難?

這個(gè)列表可以一直開(kāi)列下去,直到你不想再看下去為止。當(dāng)你面前擺著無(wú)數(shù)的眼花繚亂的方案的時(shí)候,你會(huì)覺(jué)得幸福呢?還是悲哀呢?如果你是一個(gè)負(fù)責(zé)的程序員,那么你一定會(huì)仔細(xì)研究每種方案的區(qū)別,每種方案的效率,每種方案的適用場(chǎng)合,你會(huì)覺(jué)得你已經(jīng)陷入進(jìn)去拔不出來(lái)了。如果是用EJB,你第一秒種就已經(jīng)做出了決定,根本沒(méi)得選擇,比如說(shuō)集合屬性,你只能用Collection,如果是Hibernate,你會(huì)在Bag,List和Set之間來(lái)回猶豫不決,甚至搞不清楚的話,程序都沒(méi)有辦法寫(xiě)。

【編輯推薦】

  1. Hibernate入門(mén)學(xué)習(xí)寶典
  2. Hibernate屬性簡(jiǎn)單分析
  3. Struts-Spring-Hibernate案例
  4. 解說(shuō)Hibernate的工作原理實(shí)例
  5. Hibernate的flush機(jī)制詳解
責(zé)任編輯:仲衡 來(lái)源: 比特網(wǎng)
相關(guān)推薦

2009-06-16 14:18:54

Hibernate的優(yōu)

2009-06-16 14:11:36

Hibernate優(yōu)點(diǎn)Hibernate構(gòu)架

2022-11-25 09:00:00

云計(jì)算云原生容器

2022-12-13 07:55:00

Python地理編碼

2018-03-01 14:10:37

Kubernetes負(fù)載均衡容器

2010-01-04 09:39:39

Silverlight

2010-04-20 11:51:31

負(fù)載均衡

2010-07-28 22:20:10

RIP路由配置

2010-09-25 13:07:50

DHCP協(xié)議結(jié)構(gòu)

2010-07-13 13:59:04

ICMP協(xié)議

2011-03-30 10:07:02

Zabbix安裝

2009-09-24 12:50:23

Hibernate F

2010-07-13 14:44:11

SNMP服務(wù)設(shè)置

2010-07-14 16:21:31

Telnet服務(wù)配置

2020-10-30 08:58:33

Python列表開(kāi)發(fā)

2011-03-23 14:43:07

Nagios監(jiān)控

2022-01-20 09:00:00

架構(gòu)IT企業(yè)

2010-07-27 09:30:22

2010-07-21 10:06:25

FTP Telnet

2010-04-22 18:27:37

Apache負(fù)載均衡
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)