本文向您介绍在单元测试中应用开源对象关系映射Hiberate的配置文件,通过对new Configuration()的操作得到相应的效果。

Hibernate是一个盛行的开源目标联系映射东西,单元测验和继续集成的重要性也得到了广泛的推行和认同,在采用了Hibernate的项目中怎么确保测验的自动化和继续性呢?本文评论了Hibernate装备文件hibernate.properties和hibernate.cfg.xml的进程,以及怎么样将hibernate供给的装备文件的拜访办法灵活运用到单元测验中。

在单元测试中使用Hibernate配置文件(简述hibernate配置文件的作用)  单元测试 Hibernate配置文件 第1张

介绍

Hibernate 是一个盛行的开源目标联系映射东西,单元测验和继续集成的重要性也得到了广泛的推行和认同,在采用了Hibernate的项目中怎么确保测验的自动化和继续性呢?本文评论了Hibernate加载其装备文件hibernate.properties和hibernate.cfg.xml的进程,以及怎么样将hibernate供给的装备文件的拜访办法灵活运用到单元测验中。留意:本文以hibernate2.1作为评论的根底,不确保本文的观念适合于其他版别。

1.预备

关于hibernate的初学者来说,***次运用hibernate的经历通常是:

1) 装置装备好Hibernate,咱们后边将%HIBERNATE_HOME%作为对Hibernate装置目录的引证,

2) 开端创立好自己的***个比如,例如hibernate手册里边的类Cat,

3) 装备好hbm映射文件(例如Cat.hbm.xml,本文不评论这个文件内装备项的意义)和数据库(如hsqldb),

4) 在项目的classpath途径下增加一个hibernate.cfg.xml文件,如下(***次运用hibernate最常见的装备内容):

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <!DOCTYPEhibernate-configuration
  3.   PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"
  4.   "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7.  <propertyname="connection.url">jdbc:hsqldb:hsql://localhost</property>
  8.  <propertyname="connection.driver_class">org.hsqldb.jdbcDriver</property>
  9.  <propertyname="connection.username">sa</property>
  10.  <propertyname="connection.password"></property>
  11.  <propertyname="dialect">net.sf.hibernate.dialect.HSQLDialect</property>
  12.  <propertyname="hibernate.show_sql">false</property>
  13.  <mappingresource="Cat.hbm.xml"/>
  14. </session-factory>
  15. </hibernate-configuration>

5) 然后还需要供给一个类来测验一下创立,更新,删去和查询Cat,关于了解JUnit的开发人员,能够创立一个单元测验类来进行测验,如下:

  1. importjunit.framework.TestCase;
  2. importnet.sf.hibernate.HibernateException;
  3. importnet.sf.hibernate.Session;
  4. importnet.sf.hibernate.Transaction;
  5. importnet.sf.hibernate.cfg.Configuration;
  6. publicclassCatTestextendsTestCase{
  7.  privateSessionsession;
  8.  privateTransactiontx;
  9.  protectedvoidsetUp()throwsException{
  10.   Configurationcfg=newConfiguration().configure();////留意这一行,这是本文要点评论研究的当地。
  11.   session=cfg.buildSessionFactory().openSession();
  12.   tx=session.beginTransaction();
  13.  }
  14.  protectedvoidtearDown()throwsException{
  15.   tx.commit();
  16.   session.close();
  17.  }
  18.  publicvoidtestCreate(){
  19.   //请在此办法内增加相关的代码,本文不评论怎么样运用HibernateAPI。
  20.  }
  21.  publicvoidtestUpdate(){
  22.   //请在此办法内增加相关的代码,本文不评论怎么样运用HibernateAPI。
  23.  }
  24.  publicvoidtestDelete(){
  25.   //请在此办法内增加相关的代码,本文不评论怎么样运用HibernateAPI。
  26.  }
  27.  publicvoidtestQuery(){
  28.   //请在此办法内增加相关的代码,本文不评论怎么样运用HibernateAPI。
  29.  }
  30. }

2、new Configuration()都做了什么?

关于***次运用hibernate的新手来说,下面的这段代码能够说是最常见的运用Configuration办法。

Configuration cfg = new Configuration().configure();

Configuration是hibernate的进口,在新建一个Configuration的实例的时分,hibernate会在classpath里边查找hibernate.properties文件,假如该文件存在,则将该文件的内容加载到一个Properties的实例GLOBAL_PROPERTIES里边,假如不存在,将打印信息

hibernate.properties not found

然后是将避实就虚体系环境变量(System.getProperties())也增加到GLOBAL_PROPERTIES里边( 注1)。假如hibernate.properties文件存在,体系还会验证一下这个文件装备的有效性,关于一些现已不支持的装备参数,体系将打印正告信息。

3、configure()在做什么?

new Configuration()评论至此,下面评论configure()办法。

configure()办法默许会在classpath下面寻觅hibernate.cfg.xml文件,假如没有找到该文件,体系会打印如下信息并抛出HibernateException反常。

hibernate.cfg.xml not found

假如找到该文件,configure()办法会首要拜访< session-factory >,并获取该元素的name特点,假如非空,将用这个装备的值来掩盖hibernate.properties的hibernate.session_factory_name的装备的值,从管中窥豹咱们能够看出,hibernate.cfg.xml里边的装备信息能够掩盖hibernate.properties的装备信息。

接着configure()办法拜访<session-factory>的子元素,首要将运用避实就虚的<property>元素装备的信息( 注2),如前面咱们运用的装备文件

  1. <propertyname="connection.url">jdbc:hsqldb:hsql://localhost</property>
  2. <propertyname="connection.driver_class">org.hsqldb.jdbcDriver</property>
  3. <propertyname="connection.username">sa</property>
  4. <propertyname="connection.password"></property>
  5. <propertyname="dialect">net.sf.hibernate.dialect.HSQLDialect</property>

会掩盖hibernate.properties里边对应的装备,hibernate2.1发布包里边自带的hibernate.properties文件(坐落%HIBERNATE_HOME%/etc下面)里边的值,如下:

  1. hibernate.dialectnet.sf.hibernate.dialect.HSQLDialect
  2. hibernate.connection.driver_classorg.hsqldb.jdbcDriver
  3. hibernate.connection.usernamesa
  4. hibernate.connection.password
  5. hibernate.connection.urljdbc:hsqldb:hsql://localhost

然后configure()会次序拜访以下几个元素的内容

  1. <mapping>
  2. <jcs-class-cache>
  3. <jcs-collection-cache>
  4. <collection-cache>

其间<mapping>是必不可少的,有必要经过装备<mapping>,configure()才干拜访到咱们界说的Java目标和联系数据库表的映射文件(hbm.xml),例如:

<mapping resource="Cat.hbm.xml"/>

经过以上的剖析,咱们对Hibernate装备文件hibernate.properties和hibernate.cfg.xml的默许的加载进程就比较清楚了。

【修改引荐】

  1. 强者Hibernate文档笔记(上)
  2. 强者Hibernate文档笔记(中)
  3. 强者Hibernate文档笔记(下)
  4. Hibernate优化办法解析
  5. Hibernate的功能优化
转载请说明出处
知优网 » 在单元测试中使用Hibernate配置文件(简述hibernate配置文件的作用)

发表评论

您需要后才能发表评论