快速业务通道

Hibernate的配置文件详解 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

Hibernate的配置文件详解

时间:2011-02-16

Hibernate的配置文件,默认的有2个:hibernate.properties,hibernate.cfg.xml,这二者,可选其一,也可以合并使用。如果存在对相同属性的定义,xml文件会覆盖properties文件的相关内容,“Hibernate In Action"上是这么说的。

这几天,碰到一个问题,那就是,本站有好几个webapp都开始使用Hibernate,如果bbs.war先发布没事,但是如果blog.war先发布,则bbs除了与blog公用的在线用户,其它什么都无法从数据库中读取。

看日志,知道是因为这种发布顺序,则bbs.war中的Forum.cfg.xml、Thread.cfg.xml之类,都没有起作用。为什么会这样呢?

原来这2个包都使用了hibernate.cfg.xml,并且在HibernateUtil中未使用其它的方式都显式地调用hibernate配置文件。

package token; import net.sf.hibernate.*; import net.sf.hibernate.cfg.*; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { /* 方法一 */ // sessionFactory = new Configuration().configure().buildSessionFactory(); /* 方法二 */ /* sessionFactory = new Configuration() .addClass(Counter.class) .addClass(Online.class) .buildSessionFactory(); */ /* 方法三 */ sessionFactory = new Configuration().configure("/token.cfg.xml").buildSessionFactory(); } catch (HibernateException ex) { throw new RuntimeException("Exception building SessionFactory: " + ex.getMessage(), ex); } } public static final ThreadLocal session = new ThreadLocal(); public static Session currentSession() throws HibernateException { Session s = (Session) session.get(); // Open a new Session, if this Thread has none yet if (s == null) { s = sessionFactory.openSession(); session.set(s); } return s; } public static void closeSession() throws HibernateException { Session s = (Session) session.get(); session.set(null); if (s != null) s.close(); } }

原来我一直使用的是方法一,而方法一虽然简单,却必须调用hibernate.cfg.xml来初始化Hibernate,如果二个包都用这样的HibernateUtil,则2个Hibernate.cfg.xml只第一个起作用。

方法二,可以解决方法一可能带来的问题。但如果自己了新的POJO,则仍然需要修改HibernateUtil.java。

所以,我试着使用了方法三,也成功了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号