首页 > 学院 > 开发设计 > 正文

如何提高Hibernate 3 启动速度

2019-11-18 13:33:02
字体:
来源:转载
供稿:网友

   在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;
    }
}




发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表