- - PR -
DBへの接続、切断タイミングについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-12-11 09:04
初歩的な質問なのですが、
サーブレットでDBを使用したいと思っておりまして、 DBへアクセスするクラスを作成しようとしています。 その中で、 ひとつのSQL命令毎にDBのConnectionと、SQL文のStatementを、 接続切断するべきか、 それともコンストラクタで接続まで行ない、ConnectionとStatementを、 クラス変数に保持しておいて、DBを使った処理が全て終わった時点で最後に切断を行うべきか、どちらが良いか迷っております。 あと、排他制御はSQL命令によるロックを使うだけで良いのでしょうか? DBへアクセスするクラス内での下記のようなDBの接続や切断を行う部分でも、 排他制御は必要だったりするのでしょうか? db = DriverManager.getConnection("jdbc:postgresql://localhost:5432/***** sttSql = db.createStatement(); sttSql.executeUpdate(SQL文); sttSql.close(); db.close(); |
|
投稿日時: 2005-12-11 11:20
Connectionに関しては コネクションプーリングを使ってアクセスするのが一般的です。
詳しくは自分で調べてくれ |
|
投稿日時: 2005-12-11 18:15
返答ありがとうございます。
下記のページの内容を参考に、コネクションプールを実現してみました。 http://www.hellohiro.com/jspdb.htm TOMCAT自体にコネクションプールの機能があるらしいのですが、 そちらの使い方がよく分かりませんでした。 どこか詳しく載っているホームページなどありませんでしょうか。 |
|
投稿日時: 2005-12-12 01:43
Tomcat5系のコネクションプールの使用方法です。
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/jndi-datasource-examples-howto.html JNDIに頼らない方法としては、JakartaのCommonsDBCPがあります。 Tomcatも内部ではCommonsDBCPを使用しています。 BasicDataSourceクラスを使用して、簡単にコネクションプールが実現できますので、 利用してみてはいかがでしょうか。品質は非常に高いですよ。 あと排他制御ですが、行や表に対するロックとJavaのマルチスレッドでの排他制御を 同じレベルで考えていらっしゃるんでしょうか。 過去ログや色々なサイトで勉強しなおされた方が良いかと思います。 |
|
投稿日時: 2005-12-12 07:00
返答ありがとうございます
DBを使用する為に使うクラスは、 スレッドセーフであるのでしょうか? スレッドセーフであれば、DBへのアクセスはDBのロックの機能で、 排他制御を行えばいいのかなと考えております。 |
1