superwei

导航

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

统计

常用链接

留言簿(4)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Hibernate的原理与配置快速入门(4)

 创建一个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的一个大致介绍,如果你想知道得更多,那本文还是远远不够的,我将陆续推出更多关于Hibernate的资料。但有一点是毫无疑问的:它的确是一个非常优秀的持久层解决方案!

posted on 2005-10-31 11:31 小辞猬 阅读(270) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航: