您的位置:首页 > 运维架构

hibernate配置:properties和cfg.xml

2012-02-18 21:10 351 查看
properties 是模版型配置, 可以配置一些用xml写起来麻烦的东西, 比如连接池,事务等..

xml的配置是在前面配置的基础上的再配置, 主要是配一些 mapping文件..

在源码里, Configuration cfg = new Configuration(); 是加载 properties配置..

cfg.configure()是加载的xml配置

xml配置是覆盖properties配置的.

这样就可以两个配置都用, 而且不用写硬的addclass之类的东西了..



Hibernate进行持久化操作离不开SessionFactory对象,这个对象是整个数据库映射关系经过编译后的内存镜像,该对象的openSession()方法可打开Session对象。SessionFactory对想是由Configuration对象产生。
每个Hibernate配置文件对应一个configuration对象。在极端情况下,不使用任何配置文件,也可以创建Configuration对象。

一. 创建Configuration对象
org.hibernate.cfg.Configuration实例代表一个应用程序到SQL数据库的映射配置,Configuration提供了一个buildSessionFactory()方法,该方法可以产生一个不可变的SessionFactory对象。
你可以直接实例化Configuration来获取一个实例,并为它指定一个Hibernate映射文件,如果映射文件在类加载路径中,则可以使用addResource()方法来添加映射定义文件。那么现在的问题就是如何创建Configuration对象呢?
随着Hibernate 所使用的配置文件的不同,创建Configuration对象的方式也不相同。通常有几种配置Hibernate的方式:
第一种是使用hibernate.properties文件作为配置文件。
第二种是使用hibernate.cfg.xml文件作为配置文件。
第三种是不使用任何的配置文件,以编码方式来创建Configuration对象。
请注意:Configuration对象的唯一作用就是创建SessionFactory实例,所以它才被设计成为启动期间对象,而一旦SessionFactory对象创建完成,它就被丢弃了。

1. 使用hibernateproperties作为配置文件
对于hibernate.properties作为配置文件的方式,比较适合于初学者。因为初学者往往很难记住该配置文件的格式,以及需要配置哪些属性。在Hibernate发布包的etc路径下,提供了一个hibernate.properties文件,该文件列出了Hibernate 的所有属性。每个配置段都给出了大致的注释,用户只要取消所需配置段的注释,就可以快速配置Hibernate和数据库的链接此处给出使用hibernate.properties文件创建Configuration对象的方法。


[html] view
plaincopy

//实例化configuration对象

Configuration cfg = new Configuration()

//多次调用addResource()方法,添加映射文件

.addResource("Item.hbm.xml")

.addResource("Bid.hbm.xml");



查看hibernate.properties文件发现,该文件没有提供Hibernate映射文件的方式。因此使用hibernate.properties文件来作为配置文件时,必须使用Configuration的.addResource()方法,使用该方法来添加映射文件。
注意:正如上面的代码所示,使用hibernate.properties文件配置Hibernate的属性固然简单,但是因为要手动添加映射文件,当映射文件极其多时,这是一件非常催人泪下的事情。这也就是在实际开发中,不常使用hibernate.properties文件作为配置文件的原因。
当然还有另一种添加配置文件的策略,因为映射文件和持久化类是一一对应的,可以通过Configuration对象来添加持久化类,让Hibernate自己来搜索映射文件。


[java] view
plaincopy

//实例化configuration对象

Configuration cfg = new Configuration)

//多次调用addClass()方法,直接添加持久化类

.addClass(ppp.Item.class)

.addClass(ppp.BId.class);




2. 使用hibernate.cfg.xml作为配置文件
前面已经看到使用hibernate.properties作为配置文件的情形。因为hibernate.cfg.xml中已经添加了hibernate的映射文件,采用这种配置文件创建configuration对象实例由以下代码实现:


[html] view
plaincopy

//实例化configuration对象

Configuration cfg = new Configuration()

//configure()方法将会负责加载hibernate.cfg.xml文件

.configure()



需要注意的是:在通过new关键字创建Configuration对象之后,不要忘记调用configure()方法。

二. hibernate.properties和hiberntae.cfg.xml文件
如果使用etc路径下的hibernate.properties文件作为配置文件的模板,修改此模板文件作为Hibernate配置文件,这种方式的确是快速进入Hibernate开发的方法。但是对于实际开发,通常会使用hibernate.cfg.xml文件作为配置文件。
深入对比hibernate.properties和hibernate.cfg.xml文件后看如下的hibernate.properties的一个配置属性:


[html] view
plaincopy

//指定数据库的方言

hibernate.dialect org.hibernate.dialect.MySQLDialect



上面的一行代码是典型的Properties文件的的格式,前面的key为hibernate.dialect , 后面的value是为org.hibernate.dialect.MySQLDialect。
接下来我们再来查看hibernate.cfg.xml文件中的相对应的配置代码:


[html] view
plaincopy

<property name = "dialect">org.hibernate.dialect.MySQLDialect</property>



同样指定了Hibernate的Dialect 属性是org.hibernate.dialect.MySQLDialect 。对比两种格式的文件,可以发现虽然格式不同但其实质完全一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: