JSP/Servletを使用したDAO/DTOについて

これまでC#/VB.NETでADO.NETによるデータアクセス処理ばかり行ってきた私としてはJSP/Servletではどのようにデータアクセス処理を行うのか初めて学んだ。世間ではO/Rマッピングが当たり前とはなっているが、難しいことは横に置いておいて、その基本としてDAO/DTOとADO.NETの比較をしてみたいと思う。

image

例によって、AndroidのPortableScannerを使用して取り込んだ手書きのメモである。

先日紹介した書籍では、ここに記載のあるとおりデータベースからデータを取得するためにDBManagerというクラスを作成する。DBManagerクラスのメソッドではRecordSet ResultSetクラスに取得したデータをセットして返す。

このDBManagerクラスのメソッドを使用してデータを取得するのがDAOとなる。DAOでSQLを生成してDBManagerクラスへ処理を依頼するようになる。
次にこのDAOではDBManagerで取得したResultSetのデータをあらかじめ作成したDTOに詰め替える作業も行う。この後、JSPへDTOを戻すことで画面上にデータが表示されるようになる。

ということから考えると、DBManagerとDAOがADO.NETでいうところのTableAdapterに該当し、DTOがDataTable/DataSetと言うことになると思う。また、DAOで行うデータの詰め替え作業こそがインビーダンスミスマッチによるものであり、この部分を簡単に解消するためにO/Rマッパーが使用されると考えられる。

そう考えると、やっぱりADO.NETではインビーダンスミスマッチは解消されないためDataTableがすっきりしないまたはロジックがすっきりしなかったのだろうな。DataTableのラッパーオブジェクトを作成して柔軟に対応していたことは、似たようなことを行っていたと言うことか。