在Tomcat5.5.x环境下,调用Configuration().addCacheableFile来载入配置,建立Hibernate SessionFactory,成功地提高了载入速度。
Dli^2hD KZ:8[d 推荐你只是在开发阶段采用这样的方式载入,最后的产品发布阶段你仍需使用经典的Hibernate.cfg.xml文件,通过Tomcat的ServletContextListener API在应用程序部署的时候建立Hibernate SessionFactory,而不是在程序第一次调用Hiberante的时候。
wVA|!>v p(m1O70C 文件:
j?|* LT$%7 /Go
K}W} net/netbauds/catalina/IHibernateCachableFileLoad.java
zMK](o1Vj 9kY[j2,+ 这个文件可以在不同的web应用中使用而不用作任何修改。
$O:w(U package net.netbauds.catalina;
?vGffMm A?"h@-~2 import org.hibernate.cfg.Configuration;
TE-;X,gDV_ npu6E;'l* public interface IHibernateCachableFileLoad {
hvt@XZT -,":5V26 public void addMappings(Configuration conf);
2vKx]w i(wgB\9i4 }
f|a DTWF net/netbauds/catalina/HibernateSessionFactory.java
YY4-bNj[p "n\%_'R\hH 使用静态方法HibernateSessionFactory.getSessionFactory() 来代替我们以前使用的Configuration().configure().buildSessionFactory(),这个方法一般在你的HibernateSession单态类中(参考
http://www.hibernate.org/114.html)。
lZt(&^T 4`2$_T$F 这个文件也可以在不同的应用中使用而不加任何修改:
IdRdW{o C;\VO)]t xQlT%X;' }Ewo_P&` package net.netbauds.catalina;
?Zyok]s PG)_L.7rJ import org.hibernate.SessionFactory;
I8op>^N" import org.hibernate.cfg.Configuration;
8R69q: c! H 9yk // 单态的 sessionFactory
#DP7SO public class HibernateSessionFactory {
Ew^ @Aq private static SessionFactory sessionFactory;
2N6=8Xy5K ~ |,e_
zA public static SessionFactory getSessionFactory() {
%XXkVK` // 不要从 JNDI中获取SessionFactory, 使用一个静态的 SessionFactory
H]qq ~bO[ if (sessionFactory == null ) {
cvAtw Q' Configuration conf = new Configuration();
>4![&