=?iso-2022-jp?b?W3BncG9vbC1nZW5lcmFsLWpwOiA0NTldICAbJEItNiRHJE4b?= =?iso-2022-jp?b?KEIoQihCREIbJEIlIiUvJTslOUAtRz0kSyREJCQkRhsoQg==?=

koyama mlus @ hintmark.com
2008年 6月 19日 (木) 00:25:41 JST


xeon-koyama です。



> JDBC ドライバの挙動をよく覚えていないのでもしご存知であれば教えてくだ
> さい。setAutoCommit() を実行しなかった場合、内部的に BEGIN が発行され
> るのでしょうか?

jdk1.5 の javadoc では

========================================================================
public interface Connection

特定のデータベースとの接続 (セッション) を表現します。接続のコンテキスト
内で SQL 文が実行され結果が返されます。

Connection オブジェクト中のデータベースは、テーブル、サポートしている
SQL 文法、ストアドプロシージャ、およびこの接続の能力などについての情報を
提供します。この情報は、getMetaData メソッドで取得できます。

注: 各文を実行後、デフォルトでは、Connection オブジェクトは自動コミット
モードになり、自動的に変更をコミットします。自動コミットモードが無効にさ
れている場合、変更をコミットするにはメソッド commit を明示的に呼び出す必
要があります。そうしないとデータベースの変更は保存されません。

========================================================================

とありますので、setAutoCommit=false しない限り、自動コミットになります。

ハズしているかもしれませんが・・・・・

Hibernate  とかで O/R マッピングしている時に、コネクションを無駄に取得
解放しているという可能性はないでしょうか?
(PGPoolではコネクションpoolを全くしないで、DBCP に任せる・・・・)

















pgpool-general-jp メーリングリストの案内