私は、JBoss 7は、スレッドセーフなjavax.sql.DataSourceですか?
に配備するJava EEアプリケーションでのPostgreSQL 9.1 JDBC4ドライバ(のpostgresql-9.1-902.jdbc4.jar)を使用しています私はするjavax.sql.DataSourceは、スレッドセーフであると仮定することができます複数のスレッドが同時にgetConnection()メソッドを呼び出すことができますか?
私は、JBoss 7は、スレッドセーフなjavax.sql.DataSourceですか?
に配備するJava EEアプリケーションでのPostgreSQL 9.1 JDBC4ドライバ(のpostgresql-9.1-902.jdbc4.jar)を使用しています私はするjavax.sql.DataSourceは、スレッドセーフであると仮定することができます複数のスレッドが同時にgetConnection()メソッドを呼び出すことができますか?
javax.sql.DataSource自体はインターフェイスなので、スレッドセーフであるかどうかにかかわらず、具体的なインプリケーションになります。 PostgresのSQLドライバの場合
、私はあなたが公式ドキュメントからChapter 10. Using the Driver in a Multithreaded or a Servlet Environmentを読むことをお勧めします。
PostgreSQLのJDBCドライバはスレッドセーフです。 [...]
通常は、Java EEコンテナから取得DataSource
実装では、接続プールに裏打ちされたスレッドセーフなオブジェクトになり、基礎となるJDBC接続のスレッドの安全性(またはそれ以外)がありません本当に関連性があります。データベースと対話する必要があるときの通常のパターンは、接続オブジェクトを取得するためにデータソースでgetConnection()
を呼び出し、必要なデータベース呼び出しを行い、次に接続をclose()
にすることです。カバーの下では、これは基本的な接続を実際に閉じるのではなく、将来の使用のために接続プールに戻すだけです。個々の接続は、一度に1つのスレッドでのみ使用されます。
これは、Spring JdbcTemplate
のようなもので使用されるイディオムです。
「接続プーリング実装」の場合、スレッドセーフである必要があります。