2

データベースを新しいサーバーに移行した後、作業コピーがデータベースに接続できなくなりました。しかし、私は予期していなかった何かを経験しています。アプリケーションのページがこのデータベースに接続しようとすると、セッション ファクトリの構築中、つまり ISession による明示的な接続 (エンティティのロードなど) の前にエラーが発生します。

これは正しいですか?セッション ファクトリの構築にデータベースへの接続が必要なのはなぜですか?

4

3 に答える 3

2

セッション ファクトリの構築は、必ずしもデータベースに接続するとは限りません。データベースがまったくない場合に、セッション ファクトリをインスタンス化してマッピング ファイルから SQL ファイルを作成するアプリケーションを作成しました。

ただし、次のような構成を使用して、セッション ファクトリにデータベースを作成するようにアドバイスできます。

<property name="hbm2ddl.auto">create</property>

本番環境では行いませんが、単体テストには役立つかもしれません。このような構成については、プロジェクトを確認してください。

そのような構成がない場合は、有用な情報があるかどうかエラー メッセージを確認し、スタック トレースを調べて、それが発生した場所を確認します。

于 2011-05-16T13:22:41.377 に答える
1

セッション ファクトリを構築すると、多くのクエリ、関係、メタデータなどがキャッシュされます。また、要求された場合は、データベースを作成/更新します。これは、 SessionFactoryImplクラスのコードを読んで得たものです。

セッション ファクトリを作成するプロセスは非常に重いため、DataSource ごとに 1 回だけ実行する必要があることに注意してください。これについて考えると、可能なすべてをキャッシュしてブートストラップすることは理にかなっています。

なぜそれが起こるのか、それが何をするのかを本当に知りたい場合は、ソースをダウンロードしてデバッグすることをお勧めします。

于 2011-05-16T11:33:56.700 に答える