Open棟梁 wiki [[戻る>FAQ]] *目次 [#uf367a6a] #contents *2フェーズコミットのサポート [#s4891a92] 現状サポートしていませんがTransactionScopeに対応したB層[[ベースクラス1]]を開発すれば実現は可能です。 *コネクション管理 [#d5d3ef14] **コネクション管理の実装はどのようになっていますか? [#y7c4d898] -マニュアルに記述されているとおり、 --B層[[ベースクラス2]]の[[UOC_ConnectionOpen]]メソッドでDBMS接続をOpenし、 --B層処理の完了時にフレームワーク側で自動的にDBMS接続をCloseされる >と言う方式が基本になります。 -複数のDBMS接続のOpen、Closeもサポートしています。 *トランザクション管理 [#m12931af] **トランザクション管理の実装はどのようになっていますか? [#k525856b] -マニュアルに記述されているとおり、 --B層[[ベースクラス2]]の[[UOC_ConnectionOpen]]メソッドでトランザクションを開始し、 --B層処理の完了時にフレームワーク側で自動的に「コミット or ロールバック」される >と言う方式が基本になります。 -トランザクションは、例外(Exception)が発生した場合にのみロールバックされます。 -2層C/S方式ではトランザクションの開始だけ自動化してあり、コミット・ロールバックは手動で行う必要があります。ただし、例外発生時は自動ロールバックになります。 -余談になりますが、B層ベースクラス2の[[UOC_ConnectionOpen]]メソッドの作り込みによって、クラス属性やメソッド属性を用いた属性ベースのトランザクション管理も可能になります。 **分割コミットなどは可能か? [#nb4e23fd] 以下のAPIをB層から呼び出す事で、B層内でのトランザクション分割コミットが可能です。 -this.GetDam().CommitTransaction() -this.GetDam().BeginTransaction() **手動のトランザクション管理は可能か? [#tbd150f2] 上記と同様に、Dam(データアクセス制御クラス)を直接生成してデータアクセスすることで、 -手動のトランザクション管理が可能になります。 -また、2層C/S用フレームワークでは2本目の接続が可能になります。 しかし、標準化の観点から、その例外を認めるべきかどうかは、個別に検討下さい。 *B、D層を設けるのが面倒なことがある。 [#idd9290e] -P層でDam(データアクセス制御クラス)を直接生成して~ データアクセスしてもらうことも可能です(P層のみ or P、D層の構成)。 -また、D層に共通Daoや、自動生成Daoを使用する場合、 --自作Daoの開発を割愛できます(P・B層のみの構成)。 --その場合、自作Daoは特別なケースに開発するなどプロジェクトでルールを策定して下さい。~ (インテリジェントなデータアクセスをラップするケース.etc)~ しかし、標準化の観点から、上記の例外を認めるべきかどうかは、個別に検討下さい。 *関連 [#c419aef9] -[[UOC_ConnectionOpen]] -接続 --ConnectionOpen --ConnectionClose -トランザクション --BeginTransaction --CommitTransaction --RollbackTransaction