2011-12-28 16 views
0

私はjndiを使用してdbcpデータソースにアクセスしています。JDBC接続をサーブレットスレッドにバインドする必要がありますか?

毎回1つのサーブレット要求の範囲内で、static_dataSource.getConnection()が新しい接続を返します。

休止状態には、機能getCurrentSession()があります。私の知る限り、この関数は現在のスレッドにバインドされた接続を返します。 jdbc接続をスレッドにバインドする必要がありますか?

私の目標は、1つのHTTP要求ごとに、多数のDAO呼び出しを含む1つのトランザクションの範囲内で複雑なビジネスロジックを呼び出すことです。 Springと同様に、@Transactionalでサービスクラス全体に注釈を付けることができます。

答えて

1

スレッドにJDBC接続をバインドしないことをお勧めします。プールから取得し、操作を実行し、接続を閉じてプールに戻します。

あなたの永続性コードは、Web層から完全に分離する必要があります。 Web層とは独立してテストして使用できるはずです。 2つを結びつけるために行うことは、永続性層の有効性を低下させます。

+0

私が望むのは、多くのDAO呼び出しを含む1つのトランザクションの範囲で複雑なビジネスロジックを呼び出すことです。 Springと同様に、@Transactionalでサービスクラス全体に注釈を付けることができます。 –

+0

なぜ、あなたはSpringを使っていないのですか?アイデアは、ユースケース/トランザクションを所有するオブジェクトと、ビジネスロジックに必要なすべてのDAOが接続を取得し、それを必要とするすべてのDAOで利用できるようにするために必要です。それから彼らはそれを閉じてプールに戻します。スレッドごとに1つの接続がうまく拡張されません。 – duffymo

関連する問題