升级到Hibernate 5.0.2后的性能问题 - Tomcat Server启动时间增加

时间:2015-10-21 05:56:38

标签: java spring hibernate hibernate-5.x

将Hibernate版本从4.3.9.Final升级到5.0.2.Final后,Tomcat Server启动时间增加了。

调试之后,我意识到hibernate在其元数据源中添加映射位置(* .hbm.xml文件)需要花费太多时间。

我使用以下代码在会话工厂中添加了映射位置,在我的项目中有大约1000个hbm.xml文件。

<bean id="baseSessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <prop key="hibernate.jdbc.fetch_size">300</prop>
            <prop key="net.sf.ehcache.configurationResourceName">/ehcache.xml</prop>
            <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</prop>
        </props>
    </property>

    <property name="dataSource" ref="dataSource" />
    <property name="mappingLocations">
            <list>
               <value>classpath*:com/*/**/*.hbm.xml</value>
            </list> 
    </property>
 </bean>

启动tomcat服务器时,我在方法

中调试了四次
org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet

以下for循环花费太多时间在配置类的元数据源对象中添加所有映射位置。

if (this.mappingLocations != null) {
    // Register given Hibernate mapping definitions, contained in resource files.
    for (Resource resource : this.mappingLocations) {
        sfb.addInputStream(resource.getInputStream());
    }
}

这里有改善性能的解决方案吗?升级到Hibernate-5之后有人注意到这个问题吗?

0 个答案:

没有答案