WEB开发网
开发学院WEB开发Jsp 如何提高Hibernate 3 启动速度 阅读

如何提高Hibernate 3 启动速度

 2008-01-05 09:42:22 来源:WEB开发网   
核心提示: 在Tomcat5.5.x环境下,调用Configuration().addCacheableFile来载入配置,如何提高Hibernate 3 启动速度,建立Hibernate sessionFactory,成功地提高了载入速度,文件:net/netbauds/catalina/I

  在Tomcat5.5.x环境下,调用Configuration().addCacheableFile来载入配置,建立Hibernate sessionFactory,成功地提高了载入速度。

  推荐你只是在开发阶段采用这样的方式载入,最后的产品发布阶段你仍需使用经典的Hibernate.cfg.xml文件,通过Tomcat的ServletContextListener API在应用程序部署的时候建立Hibernate SessionFactory,而不是在程序第一次调用Hiberante的时候。

文件:

net/netbauds/catalina/IHibernateCachableFileLoad.java

这个文件可以在不同的web应用中使用而不用作任何修改。
package  net.netbauds.catalina;

import  org.hibernate.cfg.Configuration;

public   interface  IHibernateCachableFileLoad {

   public   void  addMappings(Configuration conf);

}

net/netbauds/catalina/HibernateSessionFactory.java

使用静态方法HibernateSessionFactory.getSessionFactory() 来代替我们以前使用的Configuration().configure().buildSessionFactory(),这个方法一般在你的HibernateSession单态类中(参考http://www.hibernate.org/114.Html)。

这个文件也可以在不同的应用中使用而不加任何修改:

package  net.netbauds.catalina;

import  org.hibernate.SessionFactory;
import  org.hibernate.cfg.Configuration;

//  单态的 sessionFactory
public   class  HibernateSessionFactory {
   PRivate   static  SessionFactory sessionFactory;

   public   static  SessionFactory getSessionFactory() {
     //  不要从 JNDI中获取SessionFactory, 使用一个静态的 SessionFactory
     if  (sessionFactory  ==   null ) {
      Configuration conf  =   new  Configuration();

       try  {

        Class klass  =  Class.forName( " config.HibernateCachableFileLoad " );

        IHibernateCachableFileLoad hibConf  =  (IHibernateCachableFileLoad) klass.newInstance();

        hibConf.addMappings(conf);

      }  catch  (ClassNotFoundException e) {
         //  NOOP
      }  catch  (InstantiationException e) {
         //  NOOP
      }  catch  (IllegalaccessException e) {
         //  NOOP
      }
 
      Configuration confdone  =  conf.configure();

       if (confdone  !=   null ) {
         //  Use default hibernate.cfg.xml
        sessionFactory  =  confdone.buildSessionFactory();
      }
    }

     return  sessionFactory;
  }
}



Tags:如何 提高 Hibernate

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接