上級DAOプログラミング

  • JTAを使えばJMSとDBアクセスを同じトランザクション下におくことができる。
  • 例外処理について考慮すべきこと。チェックされない例外をうまく使うことと例外翻訳を行うこと。SampleにあるようにDAOでSQLExceptionを他の汎用的なExceptionにWrapする。

DAOメソッドは意味のある例外をスローすべきである。

DAOメソッドはjava.lang.Exceptionをスローしてはならない。java.lang.Exceptionは汎用すぎ、下にある問題について何の情報ももたらさない。

DAOメソッドはjava.sql.SQLExceptionをスローしてはならない。SQLExceptionは低レベルのJDBC例外です。DAOはアプリケーションの他の部分に対してJDBCを見えるようにせず、むしろ積極的にカプセル化すべきである。

DAOのメソッドは呼び出し元が例外処理することが十分想定できる場合にのみ、チェックされた例外をスローすべきである。呼び出し元が妥当な手段で例外を処理できそうもないときには、チェックされていない(ランタイムの)例外をスローすることを考慮する。

データアクセスコードが例外を捕らえたら、それを無視しないこと。例外を捕らえておいて処理しないDAOをトラブルシューティングするのは困難です。

低レベルの例外を高レベルの例外に変換するにはchained exceptionsを使う。

標準DAO例外クラスを定義することを考える。Spring Framework(参考文献)にはあらかじめ定義された、一式の素晴らしいDAO例外クラスがあります。