在Tomcat5.5.x环境下,调用Configuration().addCacheableFile来载入配置,建立Hibernate SessionFactory,成功地提高了载入速度。
 5lHt~hB\    xL_QTj    推荐你只是在开发阶段采用这样的方式载入,最后的产品发布阶段你仍需使用经典的Hibernate.cfg.xml文件,通过Tomcat的ServletContextListener API在应用程序部署的时候建立Hibernate SessionFactory,而不是在程序第一次调用Hiberante的时候。
 xSN;vrLHR   N~/X.D4e#  文件:
 E8kD#tL   IIY_Q9in  net/netbauds/catalina/IHibernateCachableFileLoad.java
 Ag0w8F   V z  这个文件可以在不同的web应用中使用而不用作任何修改。
 YM;ro5_KF  package net.netbauds.catalina;
 c`3`}&g#   C0w_pu  import org.hibernate.cfg.Configuration;
 Ux',ma1JK   (ww4(  public   interface IHibernateCachableFileLoad {
 KB~[nZs7   
'v Vt^h2    public   void addMappings(Configuration conf);
 }\<=B%{
   *3Lo[GE>  } 
 ;q-c[TZC  net/netbauds/catalina/HibernateSessionFactory.java 
 
'{cND   $,Xn@4  使用静态方法HibernateSessionFactory.getSessionFactory() 来代替我们以前使用的Configuration().configure().buildSessionFactory(),这个方法一般在你的HibernateSession单态类中(参考
http://www.hibernate.org/114.html)。
 v0)
%S   Zex~	$r  这个文件也可以在不同的应用中使用而不加任何修改:
 cG0)F%?X?   ^NU_Tp:2^   \,NT5>   ]p+KN>1e  package net.netbauds.catalina;
 -n"f>c_{>   aoW2 c1`?Z  import org.hibernate.SessionFactory;
 yx?oxDJg  import org.hibernate.cfg.Configuration;
 :K~@JlJd   R-pON4D"*  // 单态的 sessionFactory 
 1d49&-N  public   class HibernateSessionFactory {
 <FkaH8,7    private   static SessionFactory sessionFactory;
 n5~Dxk   PYi<iSr    public   static SessionFactory getSessionFactory() {
 8HLL3H0        // 不要从 JNDI中获取SessionFactory, 使用一个静态的 SessionFactory 
 T$MXsq        if (sessionFactory ==   null ) {
 phb
;D          Configuration conf =   new Configuration();
 )OQm,5F1   Oi|cTZ@A-          try {
 5w>TCx   V$DB4YM1k            Class klass = Class.forName( " config.HibernateCachableFileLoad " );
 ]E"J^mflGK   do^=Oq07$            IHibernateCachableFileLoad hibConf = (IHibernateCachableFileLoad) klass.newInstance();
 c[M4l   JQ}4{k            hibConf.addMappings(conf);
 ]EF"QLNN(   
'uz o[>p          } catch (ClassNotFoundException e) {
 R	$<{"b            // NOOP 
 !2AD/dtt          } catch (InstantiationException e) {
 4S>#>(n7=            // NOOP 
 oD2! [&          } catch (IllegalAccessException e) {
 ?XVE{N            // NOOP 
 bh8GP]*E|          }
 ]GRVU   @)Vb?|3          Configuration confdone = conf.configure();
 .&]3wB~   x!S}Y"          if (confdone !=   null ) {
 FiReb3zR            // Use default hibernate.cfg.xml 
 A1B[5a*o!            sessionFactory = confdone.buildSessionFactory();
 _\dC<K *>          }
 L8.A|      }
 :twp95{R1   M1P;x._n        return sessionFactory;
 cyd_xB5K    }
 A#q.)8  }
 lu>G=uCJ   R+0fs$su   W)Y-^i5   #('R`~  config/HibernateCachableFileLoad.java
 8yI4=P"F,   6&