o segmento javax.sql.DataSource é seguro?

Eu estou usando o driver PostgreSQL 9.1 JDBC4 (postgresql-9.1-902.jdbc4.jar) em um aplicativo Java EE implementado no JBoss 7.

Posso supor que javax.sql.DataSource é thread-safe para que vários threads possam chamar simultaneamente o método getConnection ()?

javax.sql.DataSource em si é uma interface, por isso é específico para a implementação se for thread-safe ou não.

Para o driver postgres sql, recomendo que você leia o Capítulo 10. Usando o driver em um ambiente Multithread ou Servlet da documentação oficial:

O driver JDBC do PostgreSQL é thread-safe. […]

Normalmente, a implementação de DataSource de um contêiner Java EE será um object seguro para encadeamento, respaldado por um conjunto de conexões, e a segurança de encadeamento (ou de outra forma) das conexões JDBC subjacentes não é realmente relevante. O padrão usual quando você precisa falar com o database é chamar getConnection() na fonte de dados para obter um object de conexão, fazer as chamadas de database necessárias e, em seguida, close() a conexão. Nos bastidores, isso não encerrará a conexão subjacente, mas simplesmente a retornará ao pool de conexões para uso futuro. Qualquer conexão individual será usada apenas por um thread por vez.

Este é o idioma usado por coisas como o Spring JdbcTemplate .

Se for uma ‘implementação de pool de conexão’, ela deve ser thread-safe.

Intereting Posts