- PR -

[ADO.NET]Connectionオブジェクトについて

1
投稿者投稿内容
アキミ
常連さん
会議室デビュー日: 2003/05/30
投稿数: 21
投稿日時: 2003-06-13 11:28
こんにちわ。
アキミと申します。

Webアプリケーション開発におけるDBへのConnectionオブジェクトに
ついてなのですが、
・トランザクションごとにConnectionを貼るのか
・アプリケーションオブジェクトでConnectionを共有するのか
で迷っています。

参考文書等を読んでも、アプリケーションオブジェクトでConnection
を共有化しているような例を見たことがないので、一般的な手法では
ないのかとおもっているのですが、同じDBへ接続し続けるのであれば
アプリケーションオブジェクトで共有した方が、楽な気もします。

ADO.NETでWebアプリケーションを開発されている方々はどのように
行われているのでしょうか?
NothingButXMLInfoSet
ベテラン
会議室デビュー日: 2003/03/31
投稿数: 65
投稿日時: 2003-06-13 20:03
データベースに接続する本当にギリギリ直前にOpenし、使い終わったら即刻Closeします。これ以外に有効な手順は存在しません。Applicationで共有などということは絶対にしてはいけません。OpenとCloseがメソッドをまたがることなどありえません。
GUNNM
常連さん
会議室デビュー日: 2002/01/23
投稿数: 30
お住まい・勤務地: 横浜
投稿日時: 2003-06-14 11:12
「トランザクションごとにConnectionを貼る」が正解でしょう。NothingButXMLInfoSetさんのおっしゃるとおり、OpenとCloseの間は、なるたけ簡潔にすることに勤めます。

DBはSQLServerですか?
おそらく、同時Connection数が増えていくイメージを持っているかと思いますが、
SQLServer2000なら、ConnectionPoolingの機能があり、OpenするたびにConnectionStringが切り替わるようなことが無ければ有効になるので、あまり危機感を感じる必要も無いかと思います。。。
アキミ
常連さん
会議室デビュー日: 2003/05/30
投稿数: 21
投稿日時: 2003-06-15 13:37
NothingButXMLInfoSetさん、GUNNMさん、ありがとうございます。
理解することができました。

GUNNMさんのおっしゃるとおり「処理ごとにConnectionを貼るのはもったいないなぁ」
という考えがあったので、共有化を考えていました。
SQLServerにそのような機能があることを知りませんでした。勉強になります。

DBへの接続、レコードの取得処理は関数でまとめて、プログラム中でOpen,Closeを意識
しないように作ってみようと思います。
1

スキルアップ/キャリアアップ(JOB@IT)