是javax.sql.DataSource线程安全吗?

Mar*_*tus 10 java datasource

我在JBoss 7中部署的Java EE应用程序中使用PostgreSQL 9.1 JDBC4驱动程序(postgresql-9.1-902.jdbc4.jar).

我可以假设javax.sql.DataSource是线程安全的,这样多个线程可以同时调用它上面的getConnection()方法吗?

Dag*_*Dag 10

javax.sql.DataSource本身是一个接口,因此如果它是线程安全的,它是特定于实现的.

对于postgres sql驱动程序,我建议您阅读第10章.从官方文档中使用多线程或Servlet环境中的驱动程序:

PostgreSQL JDBC驱动程序是线程安全的.[...]


Ian*_*rts 8

通常,DataSource从Java EE容器获得的实现将是由连接池支持的线程安全对象,并且底层JDBC连接的线程安全性(或其他方式)并不真正相关.当您需要与数据库通信时,通常的模式是调用getConnection()数据源以获取连接对象,进行必要的数据库调用,然后close()进行连接.在封面下,这实际上不会关闭底层连接,而只是将其返回到连接池以供将来使用.任何单独的连接一次只能由一个线程使用.

这是像春天这样的习惯用法JdbcTemplate.