実際には、SpringとJPAのどちらも関係ありません。内部的にはすべての永続性フレームワークは単にDataSource.getConnection()
を呼び出し、(おそらくプールされた)JDBC接続を受け取ることを期待しています。完了後、接続はclose()
で効果的にプールに戻されます。
DataSource
が接続を要求されても、データベースが一致しない場合、例外がスローされます。その例外は拡大し、何らかのフレームワークで処理されます。 、c3p0などのように、通常はDataSource
の実装に問題を解決するために、壊れていることが分かっている接続を破棄し、新しいものに置き換えます。実際にはプロバイダに依存しますが、データベースが再び利用可能になると、DataSource
は徐々に病気の患者の接続を取り除き、健康なものに置き換えます。
また、多くのDataSource
実装者は、接続を定期的にテストする方法を提供し、クライアントに返す前に提供します。これは、接続プールが含まれているプールされた環境では重要であり、データベースが利用できなくなったときにそのプールを検出する方法はありません。したがって、クライアントに返す前にDataSource
のテスト接続(SELECT 1
などと呼んで)を実行し、接続を切断するためにしばらくしてから同じ処理を行います。根本的なTCP接続の破損によるものです。
TL; DR
はいは、データベースがバックになると、システムが正常に動作します例外とはいを取得します。あなたは簡単にこれをテストすることができます!
ありがとう、それは私が探していたものです。 – kkiefer