CodeZine(コードジン)

特集ページ一覧

VB.NET版O/Rマッピングツール「ObjectService」の使い方(バージョン管理)

ObjectServiceによるバージョン管理

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/04/14 14:00

目次

データの新規追加と更新

 本項では、データの新規追加と更新の方法について紹介します。

 以下のソースコードを実行してみてください。ここでは、ユーザー名を「User1」、商品名を「スニーカー」、在庫数を「10」としました。

SubClass.vbのソースコード
Dim _ObjectService As New ObjectService1
Dim _StockList As New StockList

'ユーザー名を設定。
_ObjectService.VersionControler.UID = "User1"

'情報をセットして保存処理。
_StockList.Name = "スニーカー"
_StockList.Value = "10"
_ObjectService.SaveObject(_StockList)

 実行結果をSQL Server Management Studioで確認してみます。

テーブル「StockList」
テーブル「StockList」

 「CreateTimeStamp」に作成時の日時が自動記録され、「CreatedOperator」にソースコード上で設定したユーザー名「User1」が設定されました。「DeletedTimeStamp」は「2999/12/31 0:00:00」となっていますが、これはデータが最新であるということを示します。

 次に以下のソースコードを実行してみます。ここでは、ユーザー名を「User2」、在庫数を「100」に変更するものとします。

SubClass.vbのソースコード
Dim _ObjectService As New ObjectService1
Dim _StockList As New StockList

'ユーザー名を設定。
_ObjectService.VersionControler.UID = "User2"

'情報をセットして保存処理。
_StockList.Name = "スニーカー"
_StockList.Value = "100"
_ObjectService.SaveObject(_StockList)

 実行結果をSQL Server Management Studioで確認してみます。

テーブル「StockList」
テーブル「StockList」

 1行目の「DeletedTimeStamp」が「2999/12/31 0:00:00」から「2008/02/01 21:02:03(レコードを更新した日時)」に変わり、「DeletedOperator」に「User2」が保存されました。これは「User2によって2008/02/01 21:02:03に1行目のレコードが更新された」ということを意味します。

 2行目をみると「DeletedTimeStamp」が「2999/12/31 0:00:00」となっており、ソースコードで設定した通り、「CreatedOperator」が「User2」、「Value」が「100」となっています。つまり最新のスニーカーの在庫数は100に変わったことを意味します。

 このようにObjectServiceのバージョン管理機能を利用することで、ソースコード側では履歴を意識しなくとも、自動的にデータベースに履歴を保持していくことが可能になります。

データの抽出

 本項では、バージョン管理されたオブジェクトから、過去のある時点のデータを抽出してみます。

 以下のソースコードを実行して見ましょう。ここでは2008年1月15日午前10時30分00秒時点の、スニーカーの在庫数を抽出します。

SubClass.vbのソースコード
Dim _ObjectService As New ObjectService1
Dim _SampleClass As New StockList

'バージョンの日時を設定。
Dim _DateTime As New DateTime(2008, 1, 15, 10, 30, 0)
Dim _QueryCommand As New QueryCommand(GetType(StockList), _
"Name", "スニーカー", _DateTime)

'データ取得取得
_SampleClass = _ObjectService.LoadObject(_QueryCommand)

 バージョン(日時)を指定してデータを取得した場合、「指定した日時がCreatedTimeStampとDeletedTimeStampの期間内に含まれるオブジェクトの情報」が抽出されます。

 本サンプルの場合、バージョン(日時)指定を「2008年1月15日午前10時30分00秒」としましたので、CreatedTimeStampが「2008年1月1日 20時52分20秒」で、DeletedTimeStampが「2008年2月1日 21時02分03秒」である1行目のオブジェクト情報が取得されます。

まとめ

 履歴管理を行う場合、往々にしてデータベース構造が複雑になり、データベース管理者の負担が大きくなる場合があります。ObjectServiceのバージョン管理機能を利用すると、中間テーブルを使用せずに履歴を管理できるので、構造の単純化や管理の負担軽減を実現できます。ObjectServiceを利用することで、開発工程の枠を超えて、業務の効率化を実現できるのではないかと考えます。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:VB.NET版O/Rマッピングツール「ObjectService」

著者プロフィール

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5