Hibernate のバージョンを 4.3.9.Final から 5.0.2.Final にアップグレードした後、Tomcat サーバーの起動時間が長くなりました。
デバッグ後、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サーバーを起動しているときに、メソッドでデバッグして4番目に実行しました
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 にアップグレードした後、このような問題に気付いた人はいますか?