0
私のプロジェクトでは、Webからの同時ダウンロードとMySQLデータベースへの挿入/選択のために、多くのスレッドが実行されています。 私のデータベース・マネージャーは次のようになります。100の+スレッドでJDBC:接続を共有または接続プールを使用
private Connection conn;
private DatabaseManager() {
// Initialize conn
}
public static synchronized DatabaseManager getInstance() {
if (DatabaseManager.instance == null) {
DatabaseManager.instance = new DatabaseManager();
}
return DatabaseManager.instance;
}
public void deleteX() {
try {
Statement stmt = conn.createStatement();
String sql = //query
stmt.executeUpdate(sql);
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public X getX(...) {
try {
Statement stmt = conn.createStatement();
ResultSet result= // Grab and do some thing
result.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public void insert(String query) {
try {
Statement stmt = conn.createStatement();
stmt.executeUpdate(query);
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
、コールは例えば次のとおりです。
DatabaseManager.getInstance().getX(1, 1);
または
DatabaseManager.getInstance().insert("INSERT INTO ...");
私の質問です:私は右の午前アプローチが1つの接続を共有しているか、たとえばプールに10個の接続を保持するなどの方が適していますか?
問題は、現在のソリューションで常にExecutionException(NullPointerException)が発生することです。
接続プールが改善されます。これを確認してください。http://stackoverflow.com/questions/2835090/how-to-establish-a-connection-pool-in-jdbc – neohope