Seasar - DI Container with AOP -
Seasar DI Container with AOP
S2Dao.NET TOPページへ

S2Dao.NET - テーブル定義情報のキャッシュ

S2Dao.NETでは、Daoインターフェースの初期化時にデータベースからテーブル定義情報を取得しています。 テーブル定義情報の取得に時間がかかる場合、 テーブル定義情報をキャッシュするDataSetを参照することで取得時間の短縮が可能です。

DataSetの作成

テーブル定義情報をキャッシュするDataSetは、Visual Studioのデザイナ画面を使用して作成することが可能です。 例えば、次の手順に従って作成します。

  1. Visual Studioのソリューション・エクスプローラからDataSetを作成するフォルダを選択し、 コンテキストメニューから「追加」→「新しい項目」を選択します。

  2. 「新しい項目の追加」ダイアログを表示するのでテンプレート一覧から「データセット」を選択、 ファイル名にデータセットのファイル名を入力し、「追加」ボタンをクリックします。。
  3. DataSetがソリューション・エクスプローラに追加され、DataSetのデザイナ画面が表示されます。

  4. サーバー・エクスプローラからデータベースに接続します。

  5. テーブル一覧からS2Dao.NETで使用するテーブルをDataSetのデザイナ画面にドラッグ&ドロップします。

  6. DataSetのデザイナ画面を保存して終了します。

Diconファイルの定義

テーブル定義情報のキャッシュを使用するために Dao.dicon(S2Dao.NETのコンポーネントを定義しているDiconファイル)を次のように変更します。

(変更前)
<components namespace="Dao">
  ....

  <component class="Seasar.Dao.Impl.FieldAnnotationReaderFactory" />
  <component class="Seasar.Dao.Impl.DaoMetaDataFactoryImpl" />
  <component name="Interceptor" class="Seasar.Dao.Interceptors.S2DaoInterceptor" />
</components>
(変更後)
<components namespace="Dao">
  ....

  <component class="Seasar.Dao.Impl.FieldAnnotationReaderFactory" />
  <component class="Seasar.Dao.Impl.DaoMetaDataFactoryImpl">
    <property name="DBMetaData">
      <component class="Seasar.Extension.ADO.Impl.DatabaseMetaDataImpl">
        <property name="MetaDataSetClassName">"Seasar.ContainerNet42.Dao.EmployeeDataSet"</property>
      </component>
    </property>
  </component>
  <component name="Interceptor" class="Seasar.Dao.Interceptors.S2DaoInterceptor" />
</components>

Seasar.Extension.ADO.Impl.DatabaseMetaDataImplクラスのMetaDataSetClassNameプロパティにDataSetの作成で作成した DataSetクラスの名前空間+クラス名を設定します。名前空間+クラス名は、[DataSet].Designer.csから確認できます。