2012-02-17 10 views
1

使用することをお勧めされているJavaを使用して、(私の場合のOracle DB)DBにデータを挿入または更新:ResultSet.insertRow()VS Statement.executeUpdate( "INSERT INTO ...")。どちらを使うのが良いですか?

  • ResultSet.insertRow()ResultSet.updateRow()または
  • Statement.executeUpdate(....)

のほとんどの時間、私はrs.insertRow()rs.updateRow()を使用すると、クエリを書く必要がなくなりますが、パフォーマンス上の理由が正当化されていますか?

答えて

1

私はResultSetで決して何もしません。歩くこと、オブジェクトやデータ構造にマップすること、そしてそれを閉じることは例外です。挿入したい場合は、PreparedStatementで行います。私のResultSetsは、修正するのに十分な長さのままにしてはいけません。永続性操作を短くして、できるだけ早く接続を閉じることができます。私は、複数のユーザーがプールされた接続をそのように共有する方が簡単なので、このアプローチがより優れていると思います。

+0

クイックアンサー@duffymoありがとうございます。あなたは大丈夫だった、ResultSetsは追跡して管理するのが難しいと確信しています、彼らの最大の欠点の1つです。 –

+0

トラッキングは、1つのメソッドの範囲内に保持すると簡単です。それらを作成し、データをマップし、finallyブロックで閉じます。あなたはそうした方法でリソースを漏らすことはありません。 SQLアーティファクトは永続性レイヤーの外部に漏れてはなりません。 – duffymo

+0

それは本当ですが、私が意味していたことは、開いているResultSetを忘れてしまうと、アプリケーションを非常に大きくすると、それを見つけるのが非常に難しいということでした。これまでのところ、私は開いているResultSetを追跡する合理的な方法を発見していません。 –

関連する問題