2013-02-14 3 views
10

Ich verwende den PostgreSQL 9.1 JDBC4 Treiber (postgresql-9.1-902.jdbc4.jar) in einer Java-Anwendung in EE JBoss entfalteten 7.ist javax.sql.DataSource thread sicher?

Kann man davon ausgehen, dass javax.sql.DataSource ist threadsicher so dass mehrere Threads gleichzeitig die Methode getConnection() aufrufen können?

Antwort

8

Typischerweise beträgt die DataSource Implementierung Sie von einem Java EE Container bekommen eine Thread-sichere Objekt durch einen Verbindungspool und Thread-Sicherheit (oder nicht) der zugrunde liegenden JDBC-Verbindungen ist nicht gesichert sein wirklich relevant. Das übliche Muster, wenn Sie mit der Datenbank sprechen müssen, besteht darin, getConnection() in der Datenquelle aufzurufen, um ein Verbindungsobjekt zu erhalten, die erforderlichen Datenbankaufrufe durchzuführen und dann die Verbindung close(). Unter den Abdeckungen schließt dies die zugrunde liegende Verbindung nicht wirklich, sondern bringt sie einfach zur zukünftigen Verwendung in den Verbindungspool zurück. Jede einzelne Verbindung wird nur von einem Thread gleichzeitig verwendet.

Dies ist das Idiom von Dingen wie der Spring JdbcTemplate verwendet.

0

Wenn es sich um eine "Connection-Pooling-Implementierung" handelt, sollte es Thread-sicher sein.