?? 整合hibernate的ejb架構(gòu)分析.txt
字號(hào):
一、Hibernate是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)類(lèi),甚至可以是BMP里面的訪問(wèn)數(shù)據(jù)庫(kù)的代碼。從這個(gè)意義上來(lái)說(shuō),Hibernate和EB不是一個(gè)范疇的東西,也不存在非此即彼的關(guān)系。
二、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不能用來(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ū)別。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -