List patternList=new ArrayList<String>();
ResultSet rs=stat.executeQuery("select file_pattern from Pattern_table");
while(rs.next()){
sourcePattern=rs.getString(1);
patternList.add(sourcePattern);
}
ここでは、各レコードを調べて、list
に追加します。 ResultSet
をトラバースし、list
にレコードを追加するには時間がかかりすぎます。ResultSetオブジェクトをArrayListに変換する方法
ResultSet
のすべてのレコードをlist
に一度に追加する別の方法はありますか?
さらに、パフォーマンスを向上させるために私が従うことのできる方法はありますか?
このループを高速化するためにJava側から行うことはほとんどありません(おそらく、 'ArrayList'をpresizeしますが、それについてです)。そして、私は実際には、パフォーマンスの問題はここから来ているのではないかと疑います。私は、このコードが遅い場合は、避けられないもの( 'rs.next()')のデータベース側が原因であることを示しています。より速いクエリを書くことができ、しかし、あなたは 'rs.next()'の何らかの形以外のものを反復する方法がありません。プロファイルを作成して、実際にどこの時間が費やされているかを確認する必要があります(Javaコードが遅い、データベースからのI/Oを待つ時間など)。 – GPI
可能であれば、ループする要素が少なくなるように、条件を使用してデータをフィルタ処理してみてください。残念ながら、ResultSetは反復のみ可能です。 – Vektor88
JDBCを直接使用する必要はありますか?代わりにJPAを試してください。 – Stefan