您的位置:软件测试 > 开源软件测试 > 开源功能测试工具 >
Hibernate配置文件在单元测试中的灵活运用
作者:网络转载 发布时间:[ 2012/11/29 13:35:31 ] 推荐标签:

3.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),如前面我们使用的配置文件

 

<property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<property name="dialect">net.sf.hibernate.dialect.HSQLDialect</property>

会覆盖hibernate.properties里面对应的配置,hibernate2.1发布包里面自带的hibernate.properties文件(位于%HIBERNATE_HOME%/etc下面)里面的值,如下:

 

hibernate.dialect net.sf.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:hsqldb:hsql://localhost

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

 

<mapping>
<jcs-class-cache>
<jcs-collection-cache>
<collection-cache>

其中<mapping>是必不可少的,必须通过配置<mapping>,configure()才能访问到我们定义的java对象和关系数据库表的映射文件(hbm.xml),例如:

 

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

通过以上的分析,我们对hibernate配置文件hibernate.properties和hibernate.cfg.xml的默认的加载过程比较清楚了。

3.4 Configuration的其他用法
Configuration的configure ()方法还支持带参数的访问方式,你可以指定hbm.xml文件的位置,而不是使用默认的classpath下面的hibernate.cfg.xml这种方式,例如:

 

Configuration cfg = new Configuration().configure("myexample.xml");

同时Configuration还提供了一系列方法用来定制hibernate的加载配置文件的过程,让你的应用更加灵活,常用的是以下几种:

 

addProperties(Element)
addProperties(Properties)
setProperties(Properties)
setProperty(String, String)

通过以上几个方法,除了使用默认的hibernate.properties文件,你还可以提供多个.properties配置文件,使用Hibernate的时候根据不同的情况使用不同的配置文件,例如:

 

Properties properties = Properties.load("my.properties");
Configuration config = new Configuration().setProperties(properties).configure();

上一页123下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd