GWT でデータベースにクエリを実行する RPC を実行していますが、プログラムにメモリ リークがあり、クラスのセットアップ方法に強い疑いがあります。現在、私が持っている各メソッド内でデータベースに接続し、メソッドの最後でその接続を閉じる必要があります。このようにすると、メモリリークが発生しますか? このようにプログラミングするとコードが増えて非常に非効率的だと思いますが、良いサンプルがあまり見つかりません。誰かがこれを機能させるためのより良い方法を提案できますか? 名前、IP が変更されました。connect メソッドと、他のメソッドの記述方法のサンプルを投稿しました。
public class DatabaseServiceImpl extends RemoteServiceServlet implements DatabaseService {
private Connection con = null;
String database = "ioma";
String host = "localhost";
String password = "foo";
String url = "jdbc:mysql://" + host + "/" + database;
String user = "foo";
public String connect() {
String connect = "";
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
for (Throwable t : e)
System.err.println("Error connecting to the database: " + t);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
connect = "database connection aquired";
return connect;
}
public int getAssemblerCount() {
connect();
try {
int assemblerCount = 0;
String query = "SELECT COUNT(*) FROM assemblers";
PreparedStatement ps = con.prepareStatement(query);
ResultSet rs = ps.executeQuery();
rs.next();
assemblerCount = rs.getInt(1);
rs.close();
ps.close();
con.close();
return assemblerCount;
} catch (SQLException e) {
for (Throwable t : e)
System.err.println("Database error in getAssemblerCount " + e);
return 0;
}
}}