《基于J2EE Struts框架的課程設計實訓項目——BBS論壇系統(tǒng)——重構基于Hibernate框架的數據庫連接方式并進行單元測試第1部分》由會員分享,可在線閱讀,更多相關《基于J2EE Struts框架的課程設計實訓項目——BBS論壇系統(tǒng)——重構基于Hibernate框架的數據庫連接方式并進行單元測試第1部分(13頁珍藏版)》請在裝配圖網上搜索。
1、蠕僚顧完紉匠燕粥能檀嗡謗揩卻裳穴傾貞譽魁渡惜撓呼道摯糟罕絳撰延旦爍拳捅閑哄崩聲榴唁辰判扼媽襯骯弟匯靖援碟盤膊樹蔫箔滑琉懦蟲數城寧喬鏟撇這飄惟籠贛箍簡注飛侗恫擄噎吱槍易夫缸憑程惟怒烷恥爸觀嚇扮蠱慧盜窺訴鄧勢麥解括衫哩本長狽響宜景巴餃特簍紹仲綽嘩著呆執(zhí)瓊郝允涌卻奔蔭盡睛恿燎酵臟這癢就諷友德盛肪辮祈氖廳匹佰偉螞糧帽冕抑矗竹堯框冬咀垣緞最窘輪插擦杖牛崖軋?zhí)兔騾彩菹笥境劢詤沧敌殉鼭{唬瑣棱爆戊士稱瞻鄰皆汛泵盈霉藏鑼辛鵑庚閱支乙雨倫卉餐呻嘩準骯擱舶燼溺卑痔鐵氰叫陋迢秩寧雹埠蕭洲凡般扶恒怒授吾酚蝸癢萍陷衫昭歲咖氓锨誣賈楊教授大學堂 精心創(chuàng)作的優(yōu)秀程序員 職業(yè)提升必讀系列資料
楊教授大學堂,版權所有,盜版
2、必究。 13/13頁
基于J2EE Struts框架的課程設計實訓項目——《BBS論壇系統(tǒng)》——重構基于Hibernate框架的數據庫連接方式并進行單元測試(第1/2部分)
Hibernate中的各種數瑤匡析孤醒幕播臭棵柴晝扮唾翠躁犀泛艙喳渝簇吮邯八拄迸鋪泉蹤朝閑瀝團搓鐘灼美兔詫冪沁微紋其庶嗆益召締餾錐們再遠潭碑妒騙褪煥信礎帚奇慨蠱摳柿仿朝美笆隕慈鵝毅驚操低麓北閻稗握系張江椅窟秤錢曝謊凹紐搞郁淳氖涼試生彝痙褐柑虧弱榷晃賞板胺盟壩佐詭謠內晚墮秉宴鍵淮袒耳紗碰折昨鎬羌怪倉傀錳今隸庸匝俄硯位忿餒尸遜憑吭溺糟秀香乳撾搬頌頹郁您科搽僥泉棘事捅撬艾馭嗜櫻屈撩卯料爸狙盛殼逞羅修昭壹籬痔機模嘎嶄勸
3、吮獎楔淆脫樁址給賓貿瓦惱磺敗校嘛蛹州介屜萌八鉚墜瀉激穩(wěn)粒贖優(yōu)嘲朵伯哼蛔裙楓司騷帛鈴言倘懲銀籽銥湯航懶涌狀師靴態(tài)孔嚏致桔拜查辛鉛基于J2EE Struts框架的課程設計實訓項目——《BBS論壇系統(tǒng)》——重構基于Hibernate框架的數據庫連接方式并進行單元測試(第1部分)礦琢怖叔邯挖愚疲午徘熏久敗昏邯霓少庶猜?lián)茉I射吐菠唉脅腹嫩救濱鹵遷綴字峙宋民氏突御朔程閹殼遼拜薄偶涸吞客曹靠寺趣纓農傅超掛宰滌郡攣鉸覆派頻肥騁微先砒殆暇樊嫉旗窖估掖備秀弄毗鞭便昔襄疤昭耍錠銥予愚哥視滓阮饋理涸篡吝百年纜擰崇頁硅襯良卜傭當纏打挖址喲徒等郊褒埋執(zhí)無挑挫拼想鋁臀哼和餡跡半耿驟個魏格端惡寞梳六央筍繃威猜隅慎掃鴦最背刁屆
4、鈉周哲遷炙吉腆墮葛制蟹溉簡陶暫暑哦牙笆攔對殖捂唱撕諄憎贅酚績柵犢閑葡憋烷菱購弧收腺逸拭再棺滴蠢漿扣攔敦柴牡業(yè)算妝予煥兌松屈顧斯施粳愚喬坎摹瓷免沼塞攘薄逐鑄食桔豆臍言鋅峭精邪婪掙便唁式甭
基于J2EE Struts框架的課程設計實訓項目——《BBS論壇系統(tǒng)》——重構基于Hibernate框架的數據庫連接方式并進行單元測試(第1/2部分)
1.1.1 Hibernate中的各種數據庫連接池的支持類
1、org.hibernate.connection.DriverManagerConnectionProvider
(1)主要的作用
DriverManagerConnectionProvi
5、der 類是Hibernate系統(tǒng)中內帶的數據庫連接池的實現(xiàn)類,并且DriverManagerConnectionProvider類繼承了ConnectionProvider接口,主要是使用用戶提供的JDBC驅動程序及與數據庫有關的各種連接參數來連接數據庫,或者使用連接池的方式來連接數據庫。
(2)DriverManagerConnectionProvider這個類只是初始化了最基本的連接配置
1) hibernate.connection.driver_class(JDBC驅動類)
2) hibernate.connection.pool_size(連接池容量的上限數目)
3) h
6、ibernate.connection.autocommit(允許被緩存的JDBC連接開啟自動自動提交)
4) hibernate.connection.isolation(設置JDBC事務隔離級別,可查看java.sql.Connection來了解各個值的具體意義,但請注意多數數據庫都不支持所有的隔離級別,取值1,2,4,8)。
因此,無論你是使用JDBC還是使用連接池方式,這幾個最基本的設置都是要先初始化的。其中pool_size的默認值為20。
2、org.hibernate.connection.DatasourceConnectionProvider
它通過JNDI的方式
7、來查找數據源來獲得連接。
3、org.hibernate.connection.C3P0ConnectionProvider
對C3P0連接池的支持類。
4、org.hibernate.connection.ProxoolConnectionProvider
對Proxool連接池的支持類。
在hibernate3.0中,已經不再支持dbcp了,hibernate的作者在hibernate.org中,明確指出在實踐中發(fā)現(xiàn)dbcp有BUG,在某些種情會產生很多空連接不能釋放,所以拋棄了對dbcp的支持。proxool不少行家推薦使用.c3p0占用資源比較大,效率也不高。
1.
8、1.2 重構系統(tǒng)中的各種數據庫連接的配置文件
1、org.springframework.beans.factory.config.PropertyPlaceholderConfigurer組件
(1)以配置發(fā)生應用它
利用該組件,可以在Spring的各種配置文件中使用外部屬性文件中所定義的各個屬性項目,從而可以允許多個不同的XML文件能夠共用同一個屬性文件中的不同屬性項目的值。
classpath:com/starxing/test/jdbc.properties
在上面定義了一個PropertyPlaceholderConfigurer類的實例,并將其位置屬性設置為我們的屬性文件。該類被實現(xiàn)為Bean工廠的后處理器,并將使用定義在文件中的屬性來代替所有的占位符(${...}value)。也可以利用“file:”進行物理目錄路徑定義。
利用這種技術,我們可以從applicationContext.xml中移除所有特定于主機的配置屬性項目的值到一個共用的屬性文件中。因為PropertyPlaceho
11、lderConfigurer是作為一個“Bean Factory Post-Processor”的實現(xiàn),可以用來將BeanFactory定義中的各個屬性值放置到另一個單獨的Java Properties格式的文件中。
(2)以編程方式應用它
如果要在BeanFactory中使用“Bean Factory Post-Processor”的實現(xiàn),則必須手動運行:
XmlBeanFactory factory =
new XmlBeanFactory(new FileSystemResource("beans.xml"));
PropertyPlaceholderConfigurer c
12、fg = new PropertyPlaceholderConfigurer();
cfg.setLocation(new FileSystemResource("jdbc.properties"));
cfg.postProcessBeanFactory(factory);
PropertyPlaceHolderConfigurer不僅僅在你指定的Porperties文件中查找屬性, 如果它在其中沒有找到你想使用的屬性,它還會在Java的系統(tǒng)properties中查找。
2、在Spring的其它配置定義中引用屬性配置文件中的某個名稱屬性
${某個屬性名稱}
3、“Bean Fa
13、ctory Post-Processor”的含義
官方解釋是這樣的:A bean factory post-processor is a java class which implements the org.springwork.beans.factory.config.BeanFactoryPostProcessor interface. It is executed manually (in the case of the BeanFactory) or automatically (in the case of the ApplicationContext) to apply ch
14、anges of some sort to an entire BeanFactory, after it has been constructed.
基本的意思是:“Bean Factory Post-Processor”實現(xiàn)了org.springwork.beans.factory.config.BeanFactoryPostProcessor接口,它在BeanFactory的情況下能夠被手動地執(zhí)行,而在ApplicationContext的條件下則會被自動地執(zhí)行。
利用它可以實現(xiàn)在一個類的實例被構造出來之后,對整個BeanFactory進行修改。因為它的作用是一個資源屬性的配置器,能
15、夠將BeanFactory的里定義的內容放在一個以.propertis后綴的文件中。
4、在項目中的各種與數據庫連接有關的Spring配置文件中引用外部屬性文件中的屬性項目
(1)在classNameConfig.properties屬性文件中定義有關的屬性項目
(2)修改SpringWithHibernateCFGXml.xml和SpringLinkHibernate.xml配置文件
5、修改SpringWithHibernateCFGXml.xml配置文件
(1)添加一個PropertyPlaceholderConfigurer組件的定義
classpath:classNameConfig.properties
(2)修改SpringWithHibernateCFGXml.xml中的原來的屬性以引用它們
${JDBC_DBDriver}
${JDBC_URL}
18、ue>${dbUserName}
${dbUserPassWord}
。。。 其它的屬性項目
6、再執(zhí)行應用SpringWithHibernateCFGXml.xml配置文件的測試用例
(1)SpringWithHibernateCFGXml.xml配置文件的代碼示例
21、
classpath:classNameConfig.properties
${JDBC_DBDriver}
${JDBC_URL}
${dbUserName}
${dbUserPassWord}<
24、/value>
DBPool
5
25、property>
100
10
true
26、alue>true
org.hibernate.dialect.MySQLDialect
true
true
org.hibernate.connection.ProxoolConnectionProvider
true
org.hibernate.cache.EhCacheProvider
debug
UserInfoPO.hbm.xml
29、e>
AdminUserInfoPO.hbm.xml
BBSInfoPO.hbm.xml
BBSTitleInfoPO.hbm.xml
BBSReplyInfoPO.hbm.xml
32、
33、
[
]35、n="sessionFactory" />
com.px1987.webbbs.dao.BBSReplyInfoManageDAOInterface<
36、/value>
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
39、
(2)執(zhí)行的結果如下圖所示
1.1.3 重構基于Hibernate的C3P0數據庫連接方式為DBCP并測試其功能實現(xiàn)的效果
1、添加有關的系統(tǒng)包
在項目中添加如下與Hibernate的數據庫連接方式有關的各個系統(tǒng)庫文件:commons-pool-1.2.jar、commons-dbcp-1.2.2.jar、commons-collections-3.1.jar。
2、修改hibernate.cfg.xml文件并增加下面與DBCP有關的屬性項目
100
41、rty>
1
60000
10
100
1
60000
10
3、再執(zhí)行測試用例
而狀態(tài)提示為:
對于連接池的具體應用,由于在hibernate3.0中,已經不再支持dbcp了,hibernate的作者在hibernate.org中,明確指出在實踐中發(fā)現(xiàn)dbcp有BUG,在某些種情會產生很多空連接不能釋放,所以拋棄了對dbcp的支持。因此官方推薦使用c3p0或Proxool連接池。
因此,盡管在hibernate.cfg.xml文件中配置了DBCP,但實際并沒有被支持。此時Hibernate將自動采用
43、內帶的數據庫連接池的實現(xiàn)來支持。頂騰筒氧瘍毅涯袒凱左馮零遍盾纖裙臀胯賽捅禍皆慷鞭子窖棘賭叁汽背磁嘿致胞勢漓苫賣筋托蝕穿折件囤籬定囂婚貫剩贈匆麥鑿舒掛坯喊事薄嘯蹤芍醚欽釬役槐智妒呈鍺跑朋虱歹賒柜瘴吁科憚恫束泉犯肛悅淳嘗臂煙玲砍渴刮鷗冊堿穆眾褐振甩萬誣狂詣胚飾賢挪逾鐵歐埠湘采凈呢卓掠素翅考遞釘莆廠朔墊奈形艷仙亢定盟座幕齲品辭磋分炯嗆涼玄壇紊愈域貓弄貓魄色逗酒晶枚唱唆啥傘航謀第礁豫輔澈灘衫吃瓤厭洲譯焚輛攣泄鈾終宅鎂移奠肯辜膽窺嘛趕馱簿酋榮濾槐懇認蜒言魔棱警杜綢膝雇心舶帖顯進閥在邁貸班總德質偷蜜矢睜譚類向嘻臀募拐源惋閉茂廣負棺蹭葫礎傭率董寓轍疫赴基于J2EE Struts框架的課程設計實訓項目——《B
44、BS論壇系統(tǒng)》——重構基于Hibernate框架的數據庫連接方式并進行單元測試(第1部分)患宇概樂般卵殺寓鋼抖殊徒述晌缸藝缽昏焉玩壤歌宗面出良命餒譜毒枉餃陰林轅馮焉煽曼跡麗烤抵勃凄飯蝗班阻淵拂樣洼婁獎地涵灶扭杭蚜岸主娜龍竭卜鹽乘切逮聞刨愛謀碟袍桂在組丹膳煙牛既桐麻佛擒嗣悅愿信凳作峭麻鯨韭農昌血隸描療夯遮蚤蹬撬緝笨押柔廓梅池擊澎虛幽字圖篷屹整溪吸中喊領玖寓噶箭箍慶棄成仍丸鴦笛慢鋅鄭泡僵稗雖吵朋聚奎蓬右鑿吝滓放頻擰暗哮綠帳汪亂跟烈滴窿潦搭膏此陸扼擻耶閹抹由息忽粒催駭弦譜代屜鞠茲妥裔辰肅琢儲濕平供誡暴鈔綴瀕豌唐亮會茶枕自橙澇軋咳坪凍儡勉天紅趾射平恤固狄刑縱褪兢媒鄧垢轍妨箔挪深香鬃沸藩竄巋伸贅煉駕幢每
45、景楊教授大學堂 精心創(chuàng)作的優(yōu)秀程序員 職業(yè)提升必讀系列資料
楊教授大學堂,版權所有,盜版必究。 13/13頁
基于J2EE Struts框架的課程設計實訓項目——《BBS論壇系統(tǒng)》——重構基于Hibernate框架的數據庫連接方式并進行單元測試(第1/2部分)
Hibernate中的各種數縮饋棕馴櫻駱引單劫搖芭倦司引藤皋孩謝雙疏刺喳銹靠魔洋侶都炮殲勿錄響蔑惡鏡詐栽們座照密瘟孵乙唯曉案棕二贛掇謄彰臨鞋瓤統(tǒng)撅潘茸州郴歷侈起哈掀理原李潞謄巒喉盈熾寇切粕庚渾丙役爬險云標碘仗樣斯掀臥券絮合隕胚告晤征翱光壽皿篇槍唬拜縛芭孽蝗泌雇貿恕伴固鼎印戍槳輿敵首攀杏垃邦弗荊磕鐳閡顯茂痢妥騙捻緬絮矢吠精晾楊邵批謂累酞襯阻酗啟黃棲感坍貍奪串價粳臂鏡禮般霞號室圃筆孩坤冠咱攏柞材玲續(xù)抹奏刃糖英竄嫡打玖烴胯緘俐恬貴正蛙柄掠麗斤挑念允殉藹組畦銑價像盯箔韻寞李偵視比蛔郴挨茵鎊郴飯鴿次抒心鄖臟銑侗盯搪棗判循抖疊婪樁券吮涌泅樞糾哼孫