1. DAO 2.0 での搭載予定機能
現時点において検討中の DAO 2.0 での実装については以下の実装を行うことと考えています。
- コネクションプーリング機能のバージョンアップ
- DAOEditor のバージョンアップ
- XML 対応
- トランザクション管理の見直し
以下、これらの実装点について詳しく検討します。
1.1.コネクションプーリング機能のバージョンアップ
DAO 1.0 から搭載されているコネクションプーリングは、一般的にデータベースアクセスを行うアプリケーションで必ずと言っていいほど用いられている機能ですが、大抵はアプリケーションサーバや DBMS が実装する機能を利用します。しかし、DAO という考え方は本質的には DBMS 固有の機能を保持しないこと(もしくはラッパとして隠ぺいすること)でより汎用的な仕様に近付けていくことと言えます。したがってアプリケーションサーバや DBMS に依存したコネクションプーリング機能を使わなくても Java のアプリケーションレベルでコネクションをプールすることができるというコンセプトで DAO 1.0 では実装が行われています。
この DAO 1.0 でのコネクションプーリングは実際に種々の Web 系開発の過程で利用され、それなりの試験と運用の実績を持つため機能面での改造はそれほど必要とされていません。コネクションプールという概念をそのままアプリケーション側に実装した例が DAO 1.0 の実装であり、現時点において問題点は機能よりも利用する側の使い勝手に依存するものが挙げられます。
1.1.1.コネクションプーリング機能の ON/OFF
DAO 1.0 の実装するコネクションプーリング機能は現時点において問題は特に発生していない安定した機能ですが、場合によってはアプリケーションサーバや DBMS が実装しているコネクションプーリングを使うことが想定されます。その場合、DAO 1.0 が実装するコネクションプーリング機能を OFF にして、各種製品の機能を利用することができることがより柔軟な DAO となりえます。この場合は通常の URL 接続を行い、DB アクセスが発生する度にコネクションを取得するような実装にしておきます。
1.1.2.複数メタ DB への対応
DAO 1.0 では単一のメタ DB に対してしかコネクションプーリングを行うことができませんでした。つまり、現在の DAO では同時に複数のメタ DB に対してはアクセスできないことになり、それは DBMS も同時に複数扱うことができなくなると言うことを意味します。この部分については将来的に必要になる可能性が出てくるため、今回の DAO 2.0 において対応をしていきたい機能です。
1.2.DAOEditor のバージョンアップ
DAO 1.0 では対象のデータベースのカラム構成を MS-Excel で定義しておくことでそこからソースコードを自動生成する機能があります。しかし、この機能にはいくつか不十分な点があり、実用段階では不満が残る部分が多くなっています。したがって DAO 2.0 において DAOEditor をバージョンアップすることを検討しています。
1.2.1.出力されたソースコードのメンテナンスについて
DAO 1.0 における DAOEditor の一番の問題点はすでに出力されたコードを手動で機能追加(コーディング)したあとは DAOEditor によってメンテナンスができなくなると言うことです。このため、ある程度の機能追加を行ったコードに対して、DB のカラム変更等が生じた場合には変更内容を手動で対応しなくてはならず、ツールとしての価値が下がってしまいます。DAO 2.0 においては出力するソースコードのフォーマットや SQL 文などの記述方法等にある程度の制約を設け、手動でメンテナンスしたコードに対してもあとからツールで編集が可能な機能を実装していきたいと考えています。
1.3.XML への対応
本来 DAO はデータベースに対するアクセス機能だけではなく XML やファイル等に対してもアクセスすることが可能なものです。DAO 1.0 では対象がデータベースのみでしたが、2.0 においてはアクセス可能な対象を拡張し、XML や外部ファイルなどにも自由なアクセスを可能とします。特にファイルアクセスについては Java 言語を用いた場合、機械的に記述するコードが多く、データベースアクセスと多くの共通点を持ちます。XML についても同様で、アクセスする対象をデータベース以外に増やすことでアプリケーション側からはアクセスしている相手がデータベースか XML かファイルかという判別は特に意識しなくなるような総合的な外部アクセスのフレームワークとなることが望ましいと思われます。
1.4.トランザクション管理の見直し
DAO 1.0 では単一の DB アクセスのみを対象としていました。つまり、複数のテーブルに対して更新をかけるような場合に対応していないのです。これは非常に重要な機能であり、アプリケーション設計に関連する部分のため DAO 2.0 ではトランザクション管理について根本的に見直すことを考えています。また、今までの単一のデータベースアクセスで構わない場合等も考慮して、DAOEditor などで管理するレベル等を選択できるようになるとより柔軟な DAO となることが考えられます。