如何提高Hibernate 3 启动速度

2007-04-05     推荐:335616473    收藏:217163413    评论:0     来源:e800Java频道
在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;
}
}
您可以针对本文进行:[评论]  [收藏]  [推荐]   [查看原文链接]  
  • 共有0条评论  点击查看更多评论
  • 网友评论仅供网友表达个人看法,并不表明e800同意其观点或证实其描述
我想发表评论:
用户名密码
  • 匿名发表
    验证码: