Open棟梁 wiki

[[戻る>FAQ]]

*目次 [#ka5d41f8]
#contents

*FAQ [#jfbfcf9e]

**B、D層を設けるのが面倒なことがある。 [#a6a5c678]
>P層でDam(データアクセス制御クラス)を直接生成してデータアクセスしてもらうことも可能です(P層のみ or P、D層の構成)。また、D層に共通Daoや、自動生成Daoを使用することで、自作Daoの開発を割愛できます(P・B層のみの構成)。その場合、自作Daoは特別なケース(インテリジェントなデータアクセスをラップするケース.etc)に開発するなどプロジェクトでルールを策定して下さい。しかし、標準化の観点から、上記の例外を認めるべきかどうかは、個別に検討下さい。

**トランザクション管理 [#c2f36b99]

***トランザクション管理の実装はどのようになっていますか? [#n3c7238a]
-マニュアルに記述されているとおり、B層[[ベースクラス2]]のUOC_ConnectionOpen()メソッドでトランザクションを開始し、B層処理の完了時にフレームワーク側で自動的に「コミット or ロールバック」されると言う方式が基本になります。
-2層C/S方式ではトランザクションの開始だけ自動化してあり、コミット・ロールバックは手動で行う必要があります。ただし、例外発生時は自動ロールバックになります。
-トランザクションは、例外(Exception)が発生した場合にのみロールバックされます。
-余談になりますが、B層ベースクラス2のUOC_ConnectionOpen()メソッドの作り込みによって、 クラス属性やメソッド属性を用いた属性ベースのトランザクション管理も可能になります。

***分割コミットなどは可能か? [#u9088e15]
以下のAPIをB層から呼び出す事で、B層内でのトランザクション分割コミットが可能です。
-this.GetDam().CommitTransaction()
-this.GetDam().BeginTransaction()

***手動のトランザクション管理は可能か? [#gbcf0660]
上記と同様に、Dam(データアクセス制御クラス)を直接生成してデータアクセスすることで、 手動のトランザクション管理が可能になります。また、2層C/S用フレームワークでは2本目の接続が可能になります。しかし、標準化の観点から、その例外を認めるべきかどうかは、個別に検討下さい。



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS