接続プールを実装していますか? 私はPostgreSQL JDBCドライバはスレッドセーフであると信じていますが、私はMYSQLについてはわかりません。Mysqldatasourceスレッドセーフです
このようなDB接続を処理する静的オブジェクトを作成しています。 package com.amzi.DataAccess;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class DBUtil {
private static MysqlDataSource dataSource = null;
public static MysqlDataSource getDataSource() {
if (dataSource == null) {
dataSource = new MysqlDataSource();
dataSource.setUser("root");
dataSource.setPassword(""); // Put your password here
dataSource.setUrl("jdbc:mysql://localhost:3306/user_device_table");
}
return dataSource;
}
}
また別のクラスでは、レコードが存在するかどうかを確認するための接続を作成します。 接続が完了したら、私はそれを閉じます。
public boolean ValidateLogin(User user) {
boolean status = false;
PreparedStatement ps = null;
ResultSet rs = null;
Connection connection = null;
try {
connection = DBUtil.getDataSource().getConnection();
ps = connection.prepareStatement("select * from users where user_name=? and password=?");
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
rs = ps.executeQuery();
status = rs.next();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return status;
}
ほとんどの場合(古いバージョンのTomcatを使用している場合を除く)、データソースの設定にはアプリケーションサーバーの設定を使用する必要があります。これには常に接続プールの設定が伴います。 –
@SteveCは接続プールですか? 3つのラップトップをすべてlocalhost上で実行しているとしますが、それらはすべて同じリモートデータベースに接続されていますか?この場合プールが必要でしょうか? –
10秒、100秒、または1000秒のユーザーを持つことができるようにスケールアップする必要がある場合は、接続プールを使用すると多くの手助けをします。 –