Я переписываю устаревшее приложение. По сути, это форма с кнопками отмены и сохранения, где сохранение означает фиксацию, а отмена означает откат!
Для этого приложение сохраняет Jdbc-соединение в сеансе для пользователя и извлекает его из сеанса для операций с базами данных.
Вот примерная последовательность утверждений:
-> user login
Connection conn = dataSource.getConnection();
conn.setAutoCommit(false);
-> user interaction
List items = conn.query(...); //jdbc query
-> user interaction
Item item = conn.callStatement(...) //call stored procedure inserting data
-> user interaction
conn.rollback(); // cancel all modifications by the user (in this session)
conn.commit(); // commit the rollback (?)
Я никогда не видел такого использования транзакций и, на мой взгляд, это неправильное использование концепции. Поскольку изменяющие хранимые процедуры для меня - черный ящик, боюсь, мне придется скопировать этот подход.
Есть ли лучший способ добиться этого? без сохранения соединения в веб-сессии? поддерживает ли это пружины PlatformTransactionManager?




Это действительно странный устаревший код ... (?!)