|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的 Hibernate是一个盛行的开源对象干系映照工具,单位测试和延续集成的主要性也失掉了普遍的推行和认同,在接纳了Hibernate的项目中怎样包管测试的主动化和延续性呢?本文会商了Hibernate加载其设置文件hibernate.properties和hibernate.cfg.xml的历程,和怎样将hibernate供应的设置文件的会见办法天真使用到单位测试中。 先容 Hibernate是一个盛行的开源对象干系映照工具,单位测试和延续集成的主要性也失掉了普遍的推行和认同,在接纳了Hibernate的项目中怎样包管测试的主动化和延续性呢?本文会商了Hibernate加载其设置文件hibernate.properties和hibernate.cfg.xml的历程,和怎样将hibernate供应的设置文件的会见办法天真使用到单位测试中。注重:本文以hibernate2.1作为会商的基本,不包管本文的概念合适于其他版本。 读者 Java开辟职员,请求熟习JUnit和把握Hibernate的基本常识 内容 1.筹办 关于hibernate的初学者来讲,第一次利用hibernate的履历一般是: 1)安拆卸置好Hibernate,我们前面将%HIBERNATE_HOME%作为对Hibernate安装目次的援用, 2)入手下手创立好本人的第一个例子,比方hibernate手册内里的类Cat, 3)设置好hbm映照文件(比方Cat.hbm.xml,本文不会商这个文件内设置项的寄义)和数据库(如hsqldb), 4)在项目标classpath路径下增加一个hibernate.cfg.xml文件,以下(第一次利用hibernate最多见的设置内容):<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEhibernate-configuration PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><hibernate-configuration><session-factory> <propertyname="connection.url">jdbc:hsqldb:hsql://localhost</property> <propertyname="connection.driver_class">org.hsqldb.jdbcDriver</property> <propertyname="connection.username">sa</property> <propertyname="connection.password"></property> <propertyname="dialect">net.sf.hibernate.dialect.HSQLDialect</property> <propertyname="hibernate.show_sql">false</property> <mappingresource="Cat.hbm.xml"/></session-factory></hibernate-configuration> 5)然后还必要供应一个类来测试一下创立,更新,删除和查询Cat,关于熟习JUnit的开辟职员,能够创立一个单位测试类来举行测试,以下:importjunit.framework.TestCase;importnet.sf.hibernate.HibernateException;importnet.sf.hibernate.Session;importnet.sf.hibernate.Transaction;importnet.sf.hibernate.cfg.Configuration;publicclassCatTestextendsTestCase{ privateSessionsession; privateTransactiontx; protectedvoidsetUp()throwsException{ Configurationcfg=newConfiguration().configure();////注重这一行,这是本文重点会商研讨的中央。 session=cfg.buildSessionFactory().openSession(); tx=session.beginTransaction(); } protectedvoidtearDown()throwsException{ tx.commit(); session.close(); } publicvoidtestCreate(){ //请在此办法内增加相干的代码,本文不会商怎样利用HibernateAPI。 } publicvoidtestUpdate(){ //请在此办法内增加相干的代码,本文不会商怎样利用HibernateAPI。 } publicvoidtestDelete(){ //请在此办法内增加相干的代码,本文不会商怎样利用HibernateAPI。 } publicvoidtestQuery(){ //请在此办法内增加相干的代码,本文不会商怎样利用HibernateAPI。 }} 2、newConfiguration()都做了甚么? 关于第一次利用hibernate的老手来讲,上面的这段代码能够说是最多见的利用Configuration体例。Configurationcfg=newConfiguration().configure(); Configuration是hibernate的出口,在新建一个Configuration的实例的时分,hibernate会在classpath内里查找hibernate.properties文件,假如该文件存在,则将该文件的内容加载到一个Properties的实例GLOBAL_PROPERTIES内里,假如不存在,将打印信息 hibernate.propertiesnotfound 然后是将一切体系情况变量(System.getProperties())也增加到GLOBAL_PROPERTIES内里(注1)。假如hibernate.properties文件存在,体系还会考证一下这个文件设置的无效性,关于一些已不撑持的设置参数,体系将打印告诫信息。 3、configure()在做甚么? newConfiguration()会商至此,上面会商configure()办法。 configure()办法默许会在classpath上面寻觅hibernate.cfg.xml文件,假如没有找到该文件,体系会打印以下信息并抛出HibernateException非常。 hibernate.cfg.xmlnotfound 假如找到该文件,configure()办法会起首会见<session-factory>,并猎取该元素的name属性,假如非空,将用这个设置的值来掩盖hibernate.properties的hibernate.session_factory_name的设置的值,从这里我们能够看出,hibernate.cfg.xml内里的设置信息能够掩盖hibernate.properties的设置信息。 接着configure()办法会见<session-factory>的子元素,起首将利用一切的<property>元素设置的信息(注2),如后面我们利用的设置文件<propertyname="connection.url">jdbc:hsqldb:hsql://localhost</property><propertyname="connection.driver_class">org.hsqldb.jdbcDriver</property><propertyname="connection.username">sa</property><propertyname="connection.password"></property><propertyname="dialect">net.sf.hibernate.dialect.HSQLDialect</property> 会掩盖hibernate.properties内里对应的设置,hibernate2.1公布包内里自带的hibernate.properties文件(位于%HIBERNATE_HOME%/etc上面)内里的值,以下:hibernate.dialectnet.sf.hibernate.dialect.HSQLDialecthibernate.connection.driver_classorg.hsqldb.jdbcDriverhibernate.connection.usernamesahibernate.connection.passwordhibernate.connection.urljdbc:hsqldb:hsql://localhost 然后configure()会按次会见以下几个元素的内容<mapping><jcs-class-cache><jcs-collection-cache><collection-cache> 个中<mapping>是必不成少的,必需经由过程设置<mapping>,configure()才干会见到我们界说的java对象和干系数据库表的映照文件(hbm.xml),比方:<mappingresource="Cat.hbm.xml"/> 经由过程以上的剖析,我们对hibernate设置文件hibernate.properties和hibernate.cfg.xml的默许的加载历程就对照分明了。
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 |
|