接続の作成/受信、データベースへのクエリ、Java 7の自動リソース管理による結果処理の一般的なJDBCイディオムの統合方法、試用版-resourcesステートメント? (Tutorial)Java 7の自動リソース管理JDBC(リソース試行文)
のJava 7の前に、いつものパターンは、このようなものだった:これはConnection
を閉じてPreparedStatement
ます
try(Connection con = getConnection(); PreparedStatement prep = con.prepareConnection("Update ..."){
...
con.commit();
}
:あなたが行くことができるのJava 7で
Connection con = null;
PreparedStatement prep = null;
try{
con = getConnection();
prep = prep.prepareStatement("Update ...");
...
con.commit();
}
catch (SQLException e){
con.rollback();
throw e;
}
finally{
if (prep != null)
prep.close();
if (con != null)
con.close();
}
ロールバックはどうですか?接続はtryブロック内でのみ使用可能であるため、ロールバックを含むcatch節を追加することはできません。
tryブロックの外部で接続を定義していますか?特に接続プールが使用されている場合のベストプラクティスは何ですか?
これらの状況では、自動クローズは使用しません。この用語がすでに述べているように、それは単にリソースを閉じるためのものです。 Btw: 'try ...'ブロックの外側に接続を置くことは、接続が既に閉じられているのでtryブロックの後でロールバックできないので役に立ちません。 – home
可能な複製http://stackoverflow.com/questions/8066501/how-should-i-use-try-with-resources-with-jdbc – Raedwald
@Raedwald:これは複製ではありません。これはcon.rollback()に関するものです。 – Bijan