2016-10-04 4 views
3

私は約40のWebサービスを持っており、それぞれにデータベースから結果を得るために次のコードを用意しています。たいていの場合、私はデータベースから約200行しか取得しません。しかし、私は同僚の開発者から、このコードはあまり効率的ではない、特にgetColumnNameメソッドが高価であると言われました。私はちょうど私がgetColumnNameをキーとして使うと思っていました。下のように同じことをするより効率的な方法はありますか?もしそうなら、私はこれをより効率的にする方法はありますか?これをより良くするために調べなければならないデザインパターンはありますか?前もって感謝します。Java ResultSetを効率的にコーディングする方法

+0

あなたはベンチマークとパフォーマンスの問題を見たことがありますか? –

+0

はい、私はベンチマークしましたが、パフォーマンスの問題は見られませんでした。私の同僚のコメントを考えれば、これを書く良い方法があると思った。私は彼女になぜそれが非効率であると思ったのかと尋ねたところ、どのようにしてこれを改善できるのか、本当に私に答えを与えてくれませんでした。 –

+1

あなたは彼女が間違っていることを証明しました。答えの欠如は彼女が話していることを知らないことを示しています。列名はクエリ結果の一部として返されます:それが利用可能な理由です。これを心配しないでください。ここでは、データベース操作とネットワークトラフィックが完全に実行時間を支配しています。 – EJP

答えて

0

パフォーマンスの問題が表示されない場合は、効率の理由だけでコードを変更する必要はありません。使用している構造が意味をなさない場合は、それに固執する必要があります。

あなたが考慮する必要がありますいくつかの他のオプションがあります:

List<String> columnNames;

List<List<Object>> rowData;

    1. は、一度保存した列名のリストを個別に持っているが行単位ではなく列単位でデータを記録します。

      Map<String, List<Object>> columnData;

    2. インターフェイスを変更することなく、パフォーマンスの問題がある場合は、実装を変更することができ、テーブルへの適切な方法を用いて実現することができるインタフェースを定義することにより、クエリをカプセル化します。例えば

    public interface Table { 
        List<String> getColumnNames(); 
        Object getValue(String column, int row); 
    } 
    
  • 関連する問題