データベース コントロールの設計の問題

このトピックでは、新しいデータベース コントロールを作成する際に考慮すべき設計の問題について説明します。

データベース コントロールの詳細については、データベース コントロール : Web サービスからデータベースを使用するを参照してください。

インタフェースを分ける

新しいデータベース コントロールを設計する場合、同じデータベースに対して複数のデータベース コントロールを作成してもかまいません。一般に、データベースとの対話はいくつかのカテゴリに分類されます。

アプリケーションのユーザを上記のようなグループに区分できる場合、ユーザの種類ごとに別々のデータベース コントロールを作成すると便利です。この方法で、管理アクセスを必要としない Web サービスの開発者に対して限定的な特権操作のみを公開することができます。

ただし、データベースの管理作業はアプリケーションのデプロイメントの一環として実行されるのが一般的です。通常、プロダクション環境では、テーブル作成などの管理作業への Web サービスのインタフェースに関する要件はありません。WebLogic Workshop 付属のデータベース コントロールのサンプルには、良い設計例というよりも、便利なサンプルとしてテーブル作成メソッドが含まれています。

大きな結果セットに注意する

データベース コントロールのデータベース処理を設計する場合、処理によって返される結果セットのサイズに注意する必要があります。データベースが大きな場合、マシンで使用可能なメモリ量を超える結果セットを返すクエリはまれではありません。

結果セットが大きいことによるメモリ不足エラーを防ぐには、次のような方法があります。

複数の行を返すデータベース コントロール メソッドの記述方法については、データベース コントロール メソッドから複数の行を返すを参照してください。

ユーザの利便性を考慮して設計する

データベース コントロールを設計する場合、他のコントロールや Web サービスを設計する場合と同じように、コントロールのユーザにどのような情報が必要となるかを十分に検討します。Web サービスの開発者にとって便利な処理とデータ構造を選択します。

この目的を達成する 1 つの方法は、データベース コントロール メソッドの処理対象となるレコードまたは一部の行を表す Java クラスを提供することです。データベース コントロールのインタフェースで常にこうしたクラスを使用すると、データベース コントロールが使いやすくなります。

オブジェクトとプリミティブを使い分ける

データベース コントロール メソッドからデータを返す方法についてのトピックで説明したように、データベース フィールドが NULL の場合に返される値は、データベース フィールドを変換する Java の型によって異なります。int や float などの Java プリミティブは、NULL 値を表すことができないので、必ず有効な値を持たなければなりません。したがって、値を持たないデータベース フィールドを int に変換した場合、値は 0 となります。データベース コントロールの開発者またはクライアントがゼロと NULL を区別したい場合、基本的な型の Java ラッパー クラスを使用する必要があります。たとえば、int の代わりに java.lang.Integer を、float の代わりに java.lang.Float を使用します。

再利用できるように設計する

データベース コントロールにはできる限り柔軟性を持たせます。

たとえば、クエリに値をハードコード化しないようにします。コントロールのユーザの利便性を維持しつつ、データベース処理をできる限りパラメータで表します。一般に、処理は特定のテーブルを対象としているので、テーブル名はハードコード化した方が便利です。また、日付や時刻をクエリにハードコード化することはお勧めしません。

関連トピック

新しいデータベース コントロールを作成する