JDBCを使用してPostgresデータベースと通信しています。アプリ全体が単一の接続で実行されている場合、つまり、への呼び出しは1回だけです。
DriverManager.getConnection("jdbc:postgresql://host:5432/database", user, pass);
しかし、このConnection
オブジェクトはJavaの複数のスレッド間で共有されます。Javaスレッドがインターリーブする可能性があることを考えると、SQLトランザクション(BEGIN
およびCOMMIT
スタイル)を使用しようとすると、非常に混乱して壊れてしまうと思いますか?オブジェクトは、Connection
どのJavaスレッドがクエリを実行するためにそれを使用しているかを「知っています」か?
Connection
Javaスレッドごとに1つのオブジェクトがあり、SQLトランザクションをそのように使用する必要がありますか?または、Javaですべてのトランザクション分離を使用して実行する必要がありますsynchronized
か?