Connection Blues
2004年7月10日 Tech&Biz Tips今日はちょっとした話を(知ってる方にはつっこみどころ満載&つまらない話ですがそこはご勘弁を…)。
Webアプリケーション(サーバサイドJavaアプリケーション等)には欠かせないデータベース。こいつとサーバサイドJavaアプリケーションを繋いでくれる素敵なJavaでの技術を、JDBCといいます(余談ですがJDBCはJava Database Connectivity の略と思われがちですが、JavaSoft の資料にはJDBCはTrade Mark(商標)であって、Abbreviation(略語)ではないと書かれています)。
詳しい仕組みは省略しますが、JDBCのコーディングの中で非常に注意しなくてはならないのが、Connectionの処理です。仕事の合間に新人さんのコーディングを見ているとこんな感じになっていました。
これを見て、「まずいな」と多くの熟練Java開発者さんは思うでしょう(笑)せめてこんな感じにした方が良いだろうと思い、直してみました。
やはり、例外処理は非常に注意しなくてはいけないと思うのです。特にDBとの連携処理を、ユーザ側からデータを受け行う場合は尚更です。処理を確定するか、元に戻した上で(commit/close)Connectionをcloseしてあげないと、DBはどんなデータを保存するか解らないのですから、慎重にならないといけません。
コンピューターは与えられた命令以外の事はこなせません。最近そんな当たり前の事にようやく気がついた今日この頃です。
Webアプリケーション(サーバサイドJavaアプリケーション等)には欠かせないデータベース。こいつとサーバサイドJavaアプリケーションを繋いでくれる素敵なJavaでの技術を、JDBCといいます(余談ですがJDBCはJava Database Connectivity の略と思われがちですが、JavaSoft の資料にはJDBCはTrade Mark(商標)であって、Abbreviation(略語)ではないと書かれています)。
詳しい仕組みは省略しますが、JDBCのコーディングの中で非常に注意しなくてはならないのが、Connectionの処理です。仕事の合間に新人さんのコーディングを見ているとこんな感じになっていました。
try{
Connection conn = getConnection();
/* DBに対する処理 */
conn.close();
}catch(SQLException e){
//Exception Handling
}
これを見て、「まずいな」と多くの熟練Java開発者さんは思うでしょう(笑)せめてこんな感じにした方が良いだろうと思い、直してみました。
try{
Connection conn = getConnection();
/* DBに対する処理 */
conn.commit();
}catch(SQLException e){
conn.rollback();
//Exception Handling
}finally{
if(conn != null){
try{
conn.close();
}catch(Exception e){
//Exception Handling
}
}
}
やはり、例外処理は非常に注意しなくてはいけないと思うのです。特にDBとの連携処理を、ユーザ側からデータを受け行う場合は尚更です。処理を確定するか、元に戻した上で(commit/close)Connectionをcloseしてあげないと、DBはどんなデータを保存するか解らないのですから、慎重にならないといけません。
コンピューターは与えられた命令以外の事はこなせません。最近そんな当たり前の事にようやく気がついた今日この頃です。
コメント