我使用部署在JBoss的Java EE應用程序將PostgreSQL 9.1 JDBC4驅動程序(PostgreSQL相關9.1-902.jdbc4.jar)7是javax.sql.DataSource線程安全嗎?
我可以假設爲javax.sql.DataSource是線程安全的所以多線程可以同時調用getConnection()方法呢?
我使用部署在JBoss的Java EE應用程序將PostgreSQL 9.1 JDBC4驅動程序(PostgreSQL相關9.1-902.jdbc4.jar)7是javax.sql.DataSource線程安全嗎?
我可以假設爲javax.sql.DataSource是線程安全的所以多線程可以同時調用getConnection()方法呢?
javax.sql.DataSource本身是一個接口,所以它是一個特定的實現,如果它是線程安全的或不是。
在爲Postgres SQL驅動程序,我建議你從官方文檔閱讀Chapter 10. Using the Driver in a Multithreaded or a Servlet Environment:
PostgreSQL的JDBC驅動程序是線程安全的。 [...]
通常情況下,DataSource
實現您從Java EE容器得到的將是底層的JDBC連接的連接池支持的線程安全的對象,線程安全(或其他方式)不真正相關。當您需要與數據庫交談時,通常的模式是在數據源上調用getConnection()
以獲取連接對象,進行必要的數據庫調用,然後連接到該連接。在封面下,這不會實際關閉底層連接,而只是將其返回到連接池以供將來使用。任何單獨的連接一次只能由一個線程使用。
這是春天使用的成語JdbcTemplate
。
如果它是'連接池實現',那麼它應該是線程安全的。