ibatisはmysqlを使用して、データベースがタイムアウトして自動的に閉じる問題の解決


iBatisは自分でsimpleのデータベース接続プールを持っていて、基本的な機能はすべてあります.しかし、一部のデータベース(例えばmysql)を処理する接続アイドル時間が長すぎる(mysqlは8時間)自動タイムアウトの場合、c 3 p 0のような接続プールソフトウェアには及ばない(c 3 p 0はデータベース接続が閉じられた場合を自動的に処理できる).
私が現在採用している方法はiBatis自身が提供している巧みな方法であり、基本的な考え方は、データベースにクエリー文を一定時間おきに送信することであり、データベースの空き時間があまり長くなく、自動的に閉じることです.
方法はSqlMapConfig.xmlのdataSourceは次のように構成されています.

   
   
   
   
   
   
   
   

最初の3行はデータベース接続情報についてで、説明は不要です.
Pool.PingEnabled:オンにすると接続状態の検出が許可されるかどうかを設定します
Pool.PingQuery:接続を検出するためのクエリー語名です.もちろん簡単であればあるほどいいです.
Pool.PingConnectionOlderThan:持続接続時間が設定値(ミリ秒)を超える接続を検出します.私はそれを0に設定します(この検出は行いません).そうしないと、iBatisはこの時間を超えた後、各sqlを実行する前に接続を検出し、性能に一定の影響を与える可能性があります.
Pool.PingConnectionsNotUsedFor:設定値(ミリ秒)を超える空き接続を検出し、1時間(mysqlのデフォルトのクローズ時間は8時間)に設定します.
もちろん、c 3 p 0のような接続プールを使用する方法もあります.
しかし、コードの一部を自分で書き、以下のインタフェースを実現する必要があります.
public interface DataSourceFactory {
public void initialize(Map map);
public DataSource getDataSource();
}