Google
 
Web andore.com
Powered by SmartDoc

10. DAOのサポート(Ver 1.2.7)

10.1 イントロ

このSpringにおけるDAO(Data Access Object)のサポートは、JDBC、Hibernate、あるいは標準化された方法のJDOのようなデータアクセス技術を簡単に使えるようにすることを第1の目標とする。これによりこれらの技術の間での差し替えが簡単になり、また各技術に特有の例外をキャッチする心配をしなくていいようにすることができる。

10.2 一貫性例外ヒエラルキー

Springでは、SQLExceptionのような各テクノロジ独自の例外から、ルート例外としてDataAccessExceptionをもつ独自の例外ヒエラルキーへの便利な変換が用意されている。この例外は元の例外をラッピングするので、何が間違ったのかといった情報を失うリスクは生じない。

JDBCの例外に加えて、SpringではHibernateの例外もラッピングし、プロプライエタリで検査済み例外から抽象化された実行時例外の集合へ変換することができる。またJDO例外についても同様だ。これにより、回復不可能で適切なレイヤでしか扱えないほとんどの永続化に関する例外をcatches/throwsや例外の宣言のいやな決まり文句に煩わされることなくハンドリングすることができるようになる。今までどおり、必要となるいかなるところででも例外をトラップし、ハンドリングすることができる。上述したように、JDBC例外(特定のDB用方言も含む)も、同じヒエラルキーに変換され、つまり一貫したプログラミングモデルにのっとりでJDBCで操作を実行できるということである。

上述したものは、ORMアクセスフレームワークのテンプレート版にも当てはまる。もしInterceptorベースのクラスを使えば、SessionFactoryUtilsconvertHibernateAccessExceptionメソッドやconvertJdoAccessExceptionメソッドそれぞれへ委譲することによりアプリケーション自体がHibernateExceptionJDOExceptionの処理に注意を払わなければならない。これらのメソッドはここで挙げた例外をorg.springframework.dao例外ヒエラルキーと互換性のある例外への変換を行う。JDOExceptionは未検査なので、例外の観点からは汎用DAO抽象化が犠牲になるが、単に投げることもできる。

このSpringが用いる例外ヒエラルキーの概要は下記のダイアグラムのようになる。

10.3 DAOサポート用一貫性抽象クラス

JDBCやJDO、Hibernateのような様々なデータアクセステクノロジを一貫した方法で簡単に使えるようにするために、Springでは拡張可能な抽象DAOクラス群を提供している。このアブストラクトクラスにはデータソースや使っているテクノロジに特化した設定を行うメソッドがある。

Daoをサポートするクラスには下記のものがある。