Я использую JDBC, чтобы поговорить с моей базой данных Postgres. Если мое приложение полностью отключено от одного соединения, т.е. Есть только один вызов:
DriverManager.getConnection("jdbc:postgresql://host:5432/database", user, pass);
Но этот объект Connection
является общим для нескольких потоков в Java, я прав, полагая, что любая попытка использования транзакций SQL (BEGIN
и COMMIT
) будет только очень запутанной и сломанной, учитывая возможность чередования потоков Java? Объект Connection
"знает", какой поток Java использует его для создания запросов?
Должен ли я иметь один объект Connection
для потока Java и использовать транзакции SQL таким образом? Или я должен выполнить всю свою транзакционную изоляцию в Java с помощью synchronized
?