知识大全 如何提高Hibernate 3 启动速度

Posted 文件

篇首语:如果不想在世界上虚度一生,那就要学习一辈子。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何提高Hibernate 3 启动速度相关的知识,希望对你有一定的参考价值。

如何提高Hibernate 3 启动速度  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   在Tomcat x环境下 调用Configuration() addCacheableFile来载入配置 建立Hibernate SessionFactory 成功地提高了载入速度    推荐你只是在开发阶段采用这样的方式载入 最后的产品发布阶段你仍需使用经典的Hibernate cfg xml文件 通过Tomcat的ServletContextListener API在应用程序部署的时候建立Hibernate SessionFactory 而不是在程序第一次调用Hiberante的时候 文件 net/netbauds/catalina/IHibernateCachableFileLoad java这个文件可以在不同的web应用中使用而不用作任何修改 package  bauds catalina;import   hibernate cfg Configuration;public   interface  IHibernateCachableFileLoad      public   void  addMappings(Configuration conf);

  net/netbauds/catalina/HibernateSessionFactory java 使用静态方法HibernateSessionFactory getSessionFactory() 来代替我们以前使用的Configuration(nfigure() buildSessionFactory() 这个方法一般在你的HibernateSession单态类中(参考) 这个文件也可以在不同的应用中使用而不加任何修改

package  bauds catalina;import   hibernate SessionFactory;import   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  =  nfigure();             if (confdone  !=   null )                  //  Use default hibernate cfg xml                 sessionFactory  =  confdone buildSessionFactory();                             return  sessionFactory;    

  config/HibernateCachableFileLoad java这个文件是随web应用的不同而不同的 你需要修改代码中的某些部分使其适合你的应用 应该有人知道如何更容易的由class loader获得WEB INF/classes的绝对路径吧 这里我只是把它直接写入了程序中 你需要修改如下部分 * 将你所有的Hibernate映射配置文件(* hbm xml)加入到程序中(正如你在Hibernate cfg xml中所做的)

package  config;import  bauds catalina IHibernateCachableFileLoad;import   hibernate cfg Configuration;//  This class is webapp specific and allow loading of mapping via//   addCachableFile(); public   class  HibernateCachableFileLoad  implements  IHibernateCachableFileLoad      public   void  addMappings(Configuration conf)         doFile(conf   /mydomain/MyClassFile hbm xml );        doFile(conf   /mydomain/MyClassFile hbm xml );         private   void  doFile(Configuration conf  String resPath)         String path  =   null ;        URL u  =   this getClass() getClassLoader() getResource(resPath);         if (u  !=   null )             path  =  u getFile();             if (path  !=   null )                conf  =  conf addCacheableFile(path);                 if (path  ==   null   ||  conf  ==   null )            System err println( ERROR: Failed to load:    +  resPath);     hibernate cfg xml这将使我们标准的hibernate cfg xml发生一些变化 如果你使用的是hibernate configuration dtd( 版本) 那么你可以不写入任何mapping元素 如果你使用的是老版本的dtd 那么你需要在hibernate cfg xml中写入一个mapping元素

  An alternative way maybe to programatically configure the connection datasource in the HibernateSessionFactory() above and maybe hibernate will allow you to do away with looking and parsing the hibernate cfg xml pletely and build a working factory with the Configuration you have programatically created

一个可供选择的方法是使用编写java代码的方式来配置上面的SessionFactory的connection datasource 也许Hibernate将允许你读取hibernate cfg xml文件并且是用你在程序中创建的Configuration来建立一个sessionFactory 你需要作如下修改

  * 将 java:p/env/jdbc/ConfigureMeDS 修改为你自己的数据库连接信息那么现在

    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"    "-configuration-3.0.dtd"><hibernate-configuration>    <session-factory>        <property name="connection.datasource">java:p/env/jdbc/ConfigureMeDS property>                       session-factory> hibernate-configuration>如果你使用的Hibernate版本需要在hibernate.cfg.xml中至少有一个mapping元素,那么你可能需要用到下面的两个文件,否则,如上就可以了。Tw.WiNGwit           "-//Hibernate/Hibernate Mapping DTD 3.0//EN"          "-mapping-3.0.dtd"><hibernate-mapping>    <class name="uk.mydomain.Dummy" table="dummy">       <id name="id" type="long" column="id">           <generator  />        id>     class> hibernate-mapping> uk/mydomain/Dummy.java package uk.mydomain;public class Dummy     private long id;    private long getId()         return id;        private void setId(long id)         this.id = id;     cha138/Article/program/Java/ky/201311/28058

相关参考

知识大全 如何提高hibernate性能

  文章出处  在一个拥有单独业务层的应用中业务层必须在返回之前为web层准备好其所需的数据集合这就意味着业务层应该载入所有表现层/web层所需的数据并将这些已实例化完毕的数据返回通常应用程序应该为w

汽轮机额定参数启动方式有什么缺点?

  1)额定参数启动,主蒸汽与金属部件之间温差大,为了控制金属的温升速度,只能将进汽量控制得很小,从而延长了升速、暖机和带负荷时间。  2)冲转前,锅炉需要将蒸汽参数提高到额定值,必然要消耗大量的燃料

汽轮机额定参数启动方式有什么缺点?

  1)额定参数启动,主蒸汽与金属部件之间温差大,为了控制金属的温升速度,只能将进汽量控制得很小,从而延长了升速、暖机和带负荷时间。  2)冲转前,锅炉需要将蒸汽参数提高到额定值,必然要消耗大量的燃料

知识大全 关于tomcat快速启动及自动重启的方法与脚本

  大家好下面讨论一下关于tomcat快速启动及自动重启的方法与脚本  值班时会遇到tomcat服务需要手动重启的问题为减少对应用的影响提高响应速度可以将tomcat启动(或重启)写成类似系统服务启动

为什么锅炉启动后期仍要控制升压速度?

  此时虽然汽包上下壁温差逐渐减小,但由于汽包壁较厚,内外壁温差仍很大,甚至有增加的可能;另外,启动后期汽包内承受接近工作压力下的应力。因此仍要控制后期的升压速度,以防止汽包壁的应力增加。

为什么锅炉启动后期仍要控制升压速度?

  此时虽然汽包上下壁温差逐渐减小,但由于汽包壁较厚,内外壁温差仍很大,甚至有增加的可能;另外,启动后期汽包内承受接近工作压力下的应力。因此仍要控制后期的升压速度,以防止汽包壁的应力增加。

知识大全 Hibernate中重要对象[3]

Hibernate中重要对象[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ()Sessi

知识大全 Hibernate的批量处理[3]

Hibernate的批量处理[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  设置hiber

知识大全 Hibernate 3注释简介

开源技术:Hibernate3注释简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在过去几年

知识大全 Hibernate 3 Annotations 进阶

Hibernate3Annotations进阶  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘