对于开发者而言,你所要做的工作非常简单:只需从一个Configuration类中创建一个SessionFactory类就可以了。 创建一个SessionFactory对象 为了能创建一个SessionFactory对象,你必须在Hibernate初始化时创建一个Configuration类的实例,并将已写好的映射文件交由它处理。这样,Configuration对象就可以创建一个SessionFactory对象,当SessionFactory对象创建成功后,Configuration对象就没有用了,你可以简单地抛弃它。如下是示例代码: Configuration cfg = new Configuration(); cfg.addResource("hello/Message.hbm.xml"); cfg.setProperties( System.getProperties() ); SessionFactory sessions = cfg.buildSessionFactory(); 在以上代码中,Message.hb.xml这个映射文件的位置比较特殊,它与当前的classpath相关。例如classpath包含当前目录,那在上述代码中的Message.hbm.xml映射文件就可以保存在当前目录下的hello目录中。 作为一种约定,Hibernate的映射文件默认以.htm.xml作为其扩展名。另一个约定是坚持为每一个持久类写一个配置文件,想一想如果你将所有持久类的映射写入一个单独的配置文件中的话,那这个配置文件肯定非常庞大,不易维护。但这里又出现了一个新
问题:如果为每个类写一个配置文件的话,这么多的配置文件应该存放在哪里呢? Hibernate推荐你将每个映射文件保存在与持久类相同的目录下,并且与持久类同名。例如我们第一个示例
程序中的Message持久类放在hello目录下,那你必须在这个目录下存放名为Message.hbm.xml的映射文件。这样一个持久类都有自己的一个映射文件,避免了出现像struts项目中的“struts-config.xml地狱”的情况。如果你不遵循这种规定,那你必须手动地用addResource()方法将一个个的映射文件载入;但你如果遵循这种规定,那你可以方便地用addClass()方法同时将持久类和它的映射文件载入,以下是体现这种便利性的示例代码: SessionFactory sessions = new Configuration() .addClass(org.hibernate.auction.model.Item.class) .addClass(org.hibernate.auction.model.Category.class) .addClass(org.hibernate.auction.model.Bid.class) .setProperties( System.getProperties() ) .buildSessionFactory(); 当然,Hibernate的映射文件还有很多其它的配置选项,比如数据库连接的设定,或是能够改变Hibernate运行时行为的一些设定。所有的设置可能是非常庞杂的,足以让你喘不过气来,但是不必担心,因为Hibernate为绝大多数值都设定了一个合理缺省值,你只需要修改这些配置文件中的极小一部分值。 你可以通过以下几种方式来修改Hibernate的系统配置参数: · 将一个Java.util.Properties实例作为参数传给Configuration类的setProperties()方法。 · 在Hibernate启动时用Java –Dproperty=value的方式设置值。 · 在classpath可以找到的路径下创建一个名为hibernate.properties的配置文件。 · 在classpath可以找到的路径下创建一个名为hibernate.cfg.xml的文件,并在其<property>标签中定义属性值。 以上就是对Hibernate的一个大致介绍,如果你想知道得更多,那本文还是远远不够的,但有一点是毫无疑问的:它的确是一个非常优秀的持久层解决方案!