|
JDBCの基本は理解できたと思います。より実践に近い方法でDBにアクセスしてみましょう。通常RDBに対するアクセスにおいては、下記のように「呼びもとのクラス」と「RDB」の間に「RDBへのアクセスとロジック処理を専門に受け持つロジックビーン」を用意します。そしてJDBCを直に利用するクラスはロジックビーンとし、ロジックビーンと呼びもとのクラスとの値のやり取りは「カプセル化されたバリュービーン」を用いて行います。このとき、呼びもとのクラスはメソッドレベルまで簡略化された方法でビジネスロジックを駆動し、複雑なJDBCの操作を意識せずにすみます。さらにこの手法は、分散開発を行う際にも有効であり、WEBアプリケーションなどにおいて表示、コントロール層を受け持つ開発者とロジックの開発者が別々に作業を行うことを可能とします。現実的な問題としてスキルレベルが低い開発者(新人やJava以外の開発者)に対して、表示層からロジック層にいたるまでの全ての部分を網羅する形で設計・開発を要求するのは非常に難しく、なおかつ危険です。そのため、スキルレベルの低い開発者は、より分業性の高い限定的な開発を割り当てるべきです。なぜなら、往々にしてスキルレベルが低い開発者はロジックとバリュー、表示ロジックを混在して記述しがちだからです。これはシステムのパフォーマンスやメンテナンス性を大幅に低下させます。
| 図:実践的なJDBCの利用 |
| JDBCロジックの呼び出しモデル |
 |
|
|
|
| サンプルコードでの簡易モデル |
では実際に実装を行ってみましょう。用意するクラスは下記の4つです。
サンプル用のソースファイル(JavaDoc)
説明にあるようにabstractLogicBeanはドライバのロードやコネクションの切断等を受け持つ抽象クラスです。これを継承することにより具象ロジックビーンはよりロジックのみを実装できるようにシンプルになります。EmpLogicBeanは実際のロジック処理を受け持ちレコードの取得、追加、変更、削除などを行うメソッドを実装しています。また今回はそれらを駆動するための検証用のmainメソッドも実装しています。EmpValueはDBのEMPテーブルの1レコードを表すカプセル化されたクラスです。基本的に、EmpLogicBeanのメソッドと呼び元のクラス(今回はmainメソッド)はEmpValueクラスを用いて値のやり取りを行います。また例外としてEmpLogicExceptionクラスが定義してありますが、これはEmpLogic実行中に発生したEmpLogic特有の例外を扱うためのExceptionです。
|