2012-04-23 7 views
0

私は、Hibernateを使用するプロジェクトを持っており、起動時間が非常に長いため、EntitiyManagerFactoryをシリアル化することが可能で、最初の起動だけが遅くなるのではないかと思っていました。休止内部インタフェースはSerializableを拡張するため休止状態のEntitiyManagerFactoryをシリアル化できますか?

+2

答えは:それは 'Serializable'を実装していますか? – SJuan76

+0

なぜそれが遅いのかについてさらに調査したいかもしれません。 – mellamokb

+0

GING KINGから:「シリアライズされた」SessionFactoryは実際には名前にすぎません。それは状態全体をシリアライズしません。再起動すると工場を再構築する必要があります」ソース:https://hibernate.onjira.com/browse/HB-178?focusedCommentId=10677&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment -10677 " – Stephan

答えて

2

それは、休止状態(他のJPA実装である必要はない場合)にシリアル化することができます。しかし、これはおそらくアプリケーションサーバーが何らかの形でそれを不活性化することができるように、内部使用のためです。

あなたの問題は別の場所にあり、エンティティマネージャファクトリをシリアル化することで解決できません。通常は起動時に接続プールを作成し、新しいデータベース接続でそのプールを埋めます。そして、これらの接続をシリアル化することはできません。そうすれば、新たな問題が発生します。

代わりに、データベースが適時に応答していることを確認してください(そうでない場合、プールの充填が遅くなります)。起動がであるかどうかは、実際にはです。 30秒はではなく、が遅く、アプリケーションのサイズによっては5分ほど遅くなることがあります。