32

データベースへの接続を必要とする bukkit プラグイン (minecraft) があります。

データベース接続は常に開いたままにする必要がありますか?それとも必要に応じて開いたり閉じたりする必要がありますか?

4

5 に答える 5

28

データベース接続は、必要なときにのみ開き、必要なすべてのジョブを実行した後に閉じる必要があります。コードサンプル:

  • Java 7 より前:

      Connection con = null;
      try {
          con = ... //retrieve the database connection
          //do your work...
      } catch (SQLException e) {
          //handle the exception
      } finally {
          try {
              if (con != null) {
                  con.close();
              }
          } catch (SQLException shouldNotHandleMe) {
              //...
          }
      }
    
  • Java7:

      try (Connection con = ...) {
      } catch (SQLException e) {
      }
      //no need to call Connection#close since now Connection interface extends Autocloseable
    

ただし、データベース接続を手動で開くのはコストがかかりすぎるため、インターフェースを備えた Java で表現されたデータベース接続プールDataSourceを使用することを強くお勧めします。これにより、物理的なデータベース接続が処理されます。これを閉じる(つまり、 を呼び出すConnection#close) と、物理的なデータベース接続は SLEEP モードになり、開いたままになります。

関連 Q/A:

データベース接続プーリングを処理するためのいくつかのツール:

于 2013-09-23T15:17:44.863 に答える
0

Connection は、必要な場合にのみ開く必要があります。実際に必要になる前に開いていると、接続プールからアクティブな接続が 1 つ減ります。そのため、最終的にはアプリケーションのユーザーに影響を与えます。

そのため、必要な場合にのみ接続を開き、プロセスの完了後に閉じることを常にお勧めします。

アプリケーションで例外が発生した場合でも、接続が確実に閉じられるように、常にfinallyブロック内に接続を閉じるロジックを配置してみてください

finally
{
connection.close()
}
于 2013-09-23T15:17:56.447 に答える