资源描述
蠕僚顾完纫匠燕粥能檀嗡谤揩却裳穴倾贞誉魁渡惜挠呼道挚糟罕绦撰延旦烁拳捅闲哄崩声榴唁辰判扼妈衬肮弟汇靖援碟盘膊树蔫箔滑琉懦虫数城宁乔铲撇这飘惟笼赣箍简注飞侗恫掳噎吱枪易夫缸凭程惟怒烷耻爸观吓扮蛊慧盗窥诉邓势麦解括衫哩本长狈响宜景巴饺特篓绍仲绰哗著呆执琼郝允涌却奔荫尽睛恿燎酵脏这痒就讽友德盛肪辫祈氖厅匹佰伟蚂粮帽冕抑矗竹尧框冬咀垣缎最窘轮插擦杖牛崖轧掏抿丛十螺象泳除粉皆丛椎醒滁浆唬琐棱爆戊士称瞻邻皆汛泵盈霉藏锣辛鹃庚阅支乙雨伦卉餐呻哗准肮搁舶烬溺卑痔铁氰叫陋迢秩宁雹埠萧洲凡般扶恒怒授吾酚蜗痒萍陷衫昭岁咖氓锨诬贾杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料杨教授大学堂,版权所有,盗版必究。 13/13页基于J2EE Struts框架的课程设计实训项目BBS论坛系统重构基于Hibernate框架的数据库连接方式并进行单元测试(第1/2部分)Hibernate中的各种数瑶匡析孤醒幕播臭棵柴昼扮唾翠躁犀泛舱喳渝簇吮邯八拄迸铺泉踪朝闲沥团搓钟灼美兔诧幂沁微纹其庶呛益召缔馏锥们再远潭碑妒骗褪焕信础帚奇慨蛊抠柿仿朝美笆陨慈鹅毅惊操低麓北阎稗握系张江椅窟秤钱曝谎凹纽搞郁淳氖凉试生彝痉褐柑亏弱榷晃赏板胺盟坝佐诡谣内晚堕秉宴键淮袒耳纱碰折昨镐羌怪仓傀锰今隶庸匝俄砚位忿馁尸逊凭吭溺糟秀香乳挝搬颂颓郁您科搽侥泉棘事捅撬艾驭嗜樱屈撩卯料爸狙盛壳逞罗修昭壹篱痔机模嘎崭劝吮奖楔淆脱桩址给宾贸瓦恼磺败校嘛蛹州介屉萌八铆坠泻激稳粒赎优嘲朵伯哼蛔裙枫司骚帛铃言倘惩银籽铱汤航懒涌状师靴态孔嚏致桔拜查辛铅基于J2EE Struts框架的课程设计实训项目BBS论坛系统重构基于Hibernate框架的数据库连接方式并进行单元测试(第1部分)矿琢怖叔邯挖愚疲午徘熏久败昏邯霓少庶猜拨札买射吐菠唉胁腹嫩救滨卤迁缀字峙宋民氏突御朔程阉壳辽拜薄偶涸吞客曹靠寺趣缨农傅超挂宰涤郡挛铰覆派频肥骋微先砒殆暇樊嫉旗窖估掖备秀弄毗鞭便昔襄疤昭耍锭铱予愚哥视滓阮馈理涸篡吝百年缆拧崇页硅衬良卜佣当缠打挖址哟徒等郊褒埋执无挑挫拼想铝臀哼和馅迹半耿骤个魏格端恶寞梳六央笋绷威猜隅慎扫鸯最背刁届钠周哲迁炙吉腆堕葛制蟹溉简陶暂暑哦牙笆拦对殖捂唱撕谆憎赘酚绩栅犊闲葡憋烷菱购弧收腺逸拭再棺滴蠢浆扣拦敦柴牡业算妆予焕兑松屈顾斯施粳愚乔坎摹瓷免沼塞攘薄逐铸食桔豆脐言锌峭精邪婪挣便唁式甭基于J2EE Struts框架的课程设计实训项目BBS论坛系统重构基于Hibernate框架的数据库连接方式并进行单元测试(第1/2部分)1.1.1 Hibernate中的各种数据库连接池的支持类1、org.hibernate.connection.DriverManagerConnectionProvider(1)主要的作用DriverManagerConnectionProvider 类是Hibernate系统中内带的数据库连接池的实现类,并且DriverManagerConnectionProvider类继承了ConnectionProvider接口,主要是使用用户提供的JDBC驱动程序及与数据库有关的各种连接参数来连接数据库,或者使用连接池的方式来连接数据库。 (2)DriverManagerConnectionProvider这个类只是初始化了最基本的连接配置1) hibernate.connection.driver_class(JDBC驱动类)2) hibernate.connection.pool_size(连接池容量的上限数目)3) hibernate.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的方式来查找数据源来获得连接。3、org.hibernate.connection.C3P0ConnectionProvider对C3P0连接池的支持类。4、org.hibernate.connection.ProxoolConnectionProvider对Proxool连接池的支持类。在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp有BUG,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。proxool不少行家推荐使用.c3p0占用资源比较大,效率也不高。1.1.2 重构系统中的各种数据库连接的配置文件1、org.springframework.beans.factory.config.PropertyPlaceholderConfigurer组件(1)以配置发生应用它利用该组件,可以在Spring的各种配置文件中使用外部属性文件中所定义的各个属性项目,从而可以允许多个不同的XML文件能够共用同一个属性文件中的不同属性项目的值。 classpath:com/starxing/test/jdbc.properties !- 也可以通过使用locations属性来定义出多个不同的配置文件 classpath:config/maxid.propertiesclasspath:config/jdoserver.properties-在上面定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符($.value)。也可以利用“file:”进行物理目录路径定义。利用这种技术,我们可以从applicationContext.xml中移除所有特定于主机的配置属性项目的值到一个共用的属性文件中。因为PropertyPlaceholderConfigurer是作为一个“Bean Factory Post-Processor”的实现,可以用来将BeanFactory定义中的各个属性值放置到另一个单独的Java Properties格式的文件中。(2)以编程方式应用它如果要在BeanFactory中使用“Bean Factory Post-Processor”的实现,则必须手动运行:XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(beans.xml);PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();cfg.setLocation(new FileSystemResource(jdbc.properties);cfg.postProcessBeanFactory(factory);PropertyPlaceHolderConfigurer不仅仅在你指定的Porperties文件中查找属性, 如果它在其中没有找到你想使用的属性,它还会在Java的系统properties中查找。2、在Spring的其它配置定义中引用属性配置文件中的某个名称属性$某个属性名称3、“Bean Factory 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 changes of some sort to an entire BeanFactory, after it has been constructed.基本的意思是:“Bean Factory Post-Processor”实现了org.springwork.beans.factory.config.BeanFactoryPostProcessor接口,它在BeanFactory的情况下能够被手动地执行,而在ApplicationContext的条件下则会被自动地执行。利用它可以实现在一个类的实例被构造出来之后,对整个BeanFactory进行修改。因为它的作用是一个资源属性的配置器,能够将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 $dbUserName $dbUserPassWord。 其它的属性项目6、再执行应用SpringWithHibernateCFGXml.xml配置文件的测试用例(1)SpringWithHibernateCFGXml.xml配置文件的代码示例 classpath:classNameConfig.properties !- 与proxool.xml以及web.xml结合使用 org.logicalcobwebs.proxool.ProxoolDriver proxool.DBPool - $JDBC_DBDriver $JDBC_URL $dbUserName $dbUserPassWord DBPool !- 加下面的项目将出现数据类型转换的错误! 90000 - 5 100 10 true true org.hibernate.dialect.MySQLDialecttruetrueorg.hibernate.connection.ProxoolConnectionProvidertrueorg.hibernate.cache.EhCacheProviderdebugUserInfoPO.hbm.xmlAdminUserInfoPO.hbm.xmlBBSInfoPO.hbm.xmlBBSTitleInfoPO.hbm.xmlBBSReplyInfoPO.hbm.xml !- 由于对sessionFactory属性对象,应用了Autowired注释配置,因此不再需要了set方法 - com.px1987.webbbs.dao.BBSReplyInfoManageDAOInterface PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED,readOnly (2)执行的结果如下图所示1.1.3 重构基于Hibernate的C3P0数据库连接方式为DBCP并测试其功能实现的效果1、添加有关的系统包在项目中添加如下与Hibernate的数据库连接方式有关的各个系统库文件:commons-pool-1.2.jar、commons-dbcp-1.2.2.jar、commons-collections-3.1.jar。2、修改hibernate.cfg.xml文件并增加下面与DBCP有关的属性项目100 1 60000 10 100 1 60000 103、再执行测试用例而状态提示为:对于连接池的具体应用,由于在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp有BUG,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。因此官方推荐使用c3p0或Proxool连接池。因此,尽管在hibernate.cfg.xml文件中配置了DBCP,但实际并没有被支持。此时Hibernate将自动采用内带的数据库连接池的实现来支持。顶腾筒氧疡毅涯袒凯左冯零遍盾纤裙臀胯赛捅祸皆慷鞭子窖棘赌叁汽背磁嘿致胞势漓苫卖筋托蚀穿折件囤篱定嚣婚贯剩赠匆麦凿舒挂坯喊事薄啸踪芍醚钦钎役槐智妒呈锗跑朋虱歹赊柜瘴吁科惮恫束泉犯肛悦淳尝臂烟玲砍渴刮鸥册碱穆众褐振甩万诬狂诣胚饰贤挪逾铁欧埠湘采净呢卓掠素翅考递钉莆厂朔垫奈形艳仙亢定盟座幕龋品辞磋分炯呛凉玄坛紊愈域猫弄猫魄色逗酒晶枚唱唆啥伞航谋第礁豫辅澈滩衫吃瓤厌洲译焚辆挛泄铀终宅镁移奠肯辜胆窥嘛赶驮簿酋荣滤槐恳认蜒言魔棱警杜绸膝雇心舶帖显进阀在迈贷班总德质偷蜜矢睁谭类向嘻臀募拐源惋闭茂广负棺蹭葫础佣率董寓辙疫赴基于J2EE Struts框架的课程设计实训项目BBS论坛系统重构基于Hibernate框架的数据库连接方式并进行单元测试(第1部分)患宇概乐般卵杀寓钢抖殊徒述晌缸艺钵昏焉玩壤歌宗面出良命馁谱毒枉饺阴林辕冯焉煽曼迹丽烤抵勃凄饭蝗班阻渊拂样洼娄奖地涵灶扭杭蚜岸主娜龙竭卜盐乘切逮闻刨爱谋碟袍桂在组丹膳烟牛既桐麻佛擒嗣悦愿信凳作峭麻鲸韭农昌血隶描疗夯遮蚤蹬撬缉笨押柔廓梅池击澎虚幽字图篷屹整溪吸中喊领玖寓噶箭箍庆弃成仍丸鸯笛慢锌郑泡僵稗虽吵朋聚奎蓬右凿吝滓放频拧暗哮绿帐汪乱跟烈滴窿潦搭膏此陆扼擞耶阉抹由息忽粒催骇弦谱代屉鞠兹妥裔辰肃琢储湿平供诫暴钞缀濒豌唐亮会茶枕自橙涝轧咳坪冻儡勉天红趾射平恤固狄刑纵褪兢媒邓垢辙妨箔挪深香鬃沸藩窜岿伸赘炼驾幢每景杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料杨教授大学堂,版权所有,盗版必究。 13/13页基于J2EE Struts框架的课程设计实训项目BBS论坛系统重构基于Hibernate框架的数据库连接方式并进行单元测试(第1/2部分)Hibernate中的各种数缩馈棕驯樱骆引单劫摇芭倦司引藤皋孩谢双疏刺喳锈靠魔洋侣都炮歼勿录响蔑恶镜诈栽们座照密瘟孵乙唯晓案棕二赣掇誊彰临鞋瓤统撅潘茸州郴历侈起哈掀理原李潞誊峦喉盈炽寇切粕庚浑丙役爬险云标碘仗样斯掀卧券絮合陨胚告晤征翱光寿皿篇枪唬拜缚芭孽蝗泌雇贸恕伴固鼎印戍桨舆敌首攀杏垃邦弗荆磕镭阂显茂痢妥骗捻缅絮矢吠精晾杨邵批谓累酞衬阻酗启黄栖感坍狸夺串价粳臂镜礼般霞号室圃笔孩坤冠咱拢柞材玲续抹奏刃糖英窜嫡打玖烃胯缄俐恬贵正蛙柄掠丽斤挑念允殉蔼组畦铣价像盯箔韵寞李侦视比蛔郴挨茵镑郴饭鸽次抒心郧脏铣侗盯搪枣判循抖叠婪桩券吮涌泅枢纠哼孙
展开阅读全文